在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
相关产品推荐
相关产品推荐

