我正在使用CIFAR 10数据集,并在从数据集中提取图像时遇到完全相同的问题
loading an image from cifar-10 dataset
此数据集中的图像具有以下结构 -
每个阵列都存储一个32x32彩色图像 . 前1024个条目包含红色通道值,下一个1024表示绿色,最后1024个表示蓝色 . 图像以行主顺序存储,因此数组的前32个条目是图像第一行的红色通道值 .
用于提取我正在做的图像(我以前做过并且工作过)
df_im = np.reshape(df ['data'],(df ['data'] . shape [0],32,32,3))
这种重塑不能按预期工作 .
但这有效 -
df_im = np.reshape(df ['data'],(df ['data'] . shape [0],3,32,32))
Why the latter worked in in this case but not the former one. And how to decide the np.reshape "shape" tuple based on the flattened array structure.
1 回答
让我们用较小的“图像”重新创建数据:
这看起来像你的一个图像,不是吗?前N个值为“红色”,下一个N为“绿色”等
重塑为2d:
重塑为3d:
'row major'表示第一维是最外层的,并且变化最慢 . 最后一个维度是内部维度 .
reshape
保留数据元素的顺序 . 它只是改变了它们被观察,划分的方式,可以说是平面,行和列 .