MNIST相关CNN代码中rgb2gray作用及reshape(1,1,28,28)含义咨询
问题1解答
你观察到的MNIST原生为单通道灰度图是正确的,这里加rgb2gray是做兼容处理:
- 该代码没有直接调用框架内置的MNIST数据集加载接口,而是从本地读取导出后的单张图片文件。很多图片导出工具默认会把灰度图存储为3通道RGB格式(三个通道数值完全相同的伪彩色图),加这行是为了统一把这类多通道输入转成单通道灰度,避免后续通道数不匹配报错。
- 主流数值计算库的
rgb2gray实现对单通道输入都做了兼容,若输入本身就是单通道灰度图,调用后会直接返回原数据,不会产生额外副作用。
问题2解答
test_x.reshape(1, 1, 28, 28)是把测试数据转换成深度学习框架要求的NCHW格式张量,四个参数从左到右分别对应:
- 第1位:batch size,代表单次输入1张测试图片
- 第2位:通道数,灰度图通道数为1
- 第3位:图片高度,MNIST图片标准高度为28像素
- 第4位:图片宽度,MNIST图片标准宽度为28像素
这种维度排布是PyTorch等框架的默认输入格式,符合该仓库CNN模型的输入要求。
内容的提问来源于stack exchange,提问作者Eylul Mood
相关产品推荐
相关产品推荐

