【发布时间】:2020-06-20 17:31:33
【问题描述】:
例如,我从 mat 文件加载的 background-Mnist 为训练集提供了 50,000x784。
应该有 50,000 张 28x28 的图片
我用
重塑了整个事物 f_train = scio.loadmat('mnist_background_images/mnist_background_images_train.mat')
f_test = scio.loadmat('mnist_background_images/mnist_background_images_test.mat')
data_train = f_train['mnist_background_images_train']
data_test = f_test['mnist_background_images_test'] #this gives 50,000x785 where last column is y
x_train = data_train[:, :-1]
x_test= data_test[:, :-1] #now it's 50,000x784
x_train = np.reshape(x_train, newshape=(-1, 28, 28 )) #new shape 50,000x28x28
x_test = np.reshape(x_test, newshape=(-1, 28, 28))
它给出了正确的尺寸。
但是,当我尝试显示每张图片时
img = x_train[2]
out = Image.fromarray(img, mode = 'L')
print(x_train.shape)
给出 (50000, 784)
图像看起来一点也不像 MNIST 数据。像素混合在一起,到处都是,就像一切都被打乱了一样。我是不是在某个地方犯了一个愚蠢的错误?
【问题讨论】:
-
你能显示从 .mat 文件加载数据的行吗?具体来说,你是用
scipy.io.loadmat还是别的什么? -
@Han-KwangNienhuys 是的,我做到了。
f_train = scio.loadmat('mnist_background_images/mnist_background_images_train.mat')这是代码 -
您能否在重塑操作之前将其添加到问题以及
print(x_train.shape)的输出中。询问的原因是保存为“-v7.3”(HDF5)的 .mat 文件以转置形式存储数组,无论如何,matlab 代码可能无法将图像保存为您期望的形状。 -
@Han-KwangNienhuys 抱歉回复晚了,我已经添加了整个代码块。
-
print语句真的输出
(50,000, 784)有两个逗号吗?
标签: python arrays matlab numpy python-imaging-library