You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Colab中使用plt无法显示CIFAR-10数据集图片的问题

CIFAR-10图片无法用plt.imshow显示的解决思路

问题描述

尝试显示CIFAR-10数据集的图片,但plt只显示坐标轴图像而非实际图片。代码如下:

from os import lseek
from cs231n.data_utils import load_CIFAR10
import matplotlib.pyplot as plt

Xtr, Ytr, Xte, Yte = load_CIFAR10('cs231n/datasets/cifar-10-batches-py')
# print(Xtr[0].shape) Shape is (32, 32, 3) RGB image.
plt.imshow(Xtr[0])

根据文档说明,(M, N, 3)格式适用于RGB图像,不清楚为何无法正常显示,求解决思路?

排查与解决方法

  • 检查数据取值范围与类型
    CIFAR-10原始数据是uint8类型(像素值0-255),如果数据被意外转换为浮点数且超出0-1范围,plt.imshow会无法正确渲染。强制转换为uint8试试:

    plt.imshow(Xtr[0].astype('uint8'))
    
  • 添加图像显示命令
    脚本环境下,plt.imshow()仅完成绘制,不会自动弹出图像窗口,必须加上:

    plt.show()
    

    若在Jupyter Notebook中,需先执行%matplotlib inline或%matplotlib notebook启用显示功能。

  • 确认通道顺序
    虽然CIFAR-10默认是(H, W, 3)的RGB顺序,但部分加载函数可能返回(3, H, W)的通道优先格式。可以转置后再显示:

    # 如果Xtr[0].shape是(3,32,32)
    plt.imshow(Xtr[0].transpose(1, 2, 0))
    
  • 验证数据有效性
    打印部分像素值,确认数据不是全0或异常值:

    print(Xtr[0][:5, :5, 0])  # 查看第一个通道前5x5区域的像素值
    

    若数值异常,需检查load_CIFAR10函数的实现,确认数据加载是否正确。

内容的提问来源于stack exchange,提问作者CupOfGreenTea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:02:20