通过keras正确地重塑MNIST图像

时间:2017-07-20 18:01:59

标签: python image-processing keras conv-neural-network

如果我通过以下方式在Keras下载CIFAR 10图像:

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

我的形状是:

In[13]: x_train.shape
Out[13]: (50000, 32, 32, 3)

然后我可以通过以下方式绘制每个图像:

plt.imshow(plt.imshow(x_train[0]))

我也可以通过做(例如R层)绘制每一层:

plt.imshow(plt.imshow(x_train[0][:,:,0]))

现在我通过以下方式通过Keras获取MNIST图像:

(X_train, y_train), (X_test, y_test) = mnist.load_data()

然而,数据的形状是:

In[17]: print(X_train.shape)
(60000, 28, 28)

然而,它的深度通道不应为1,因为它的灰度等级。

如果我使用以下方式重塑它:

X_train = X_train.reshape(X_train.shape[0],28,28,1)

我可以让神经网络工作,但我不能再绘制它了。重塑它的正确方法是什么,这样我仍可以绘制东西?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您重塑训练和测试集,则必须重新整形图像以进行绘制。

X_train = X_train.reshape(X_train.shape[0], 28, 28, 1)
X_test = X_test.reshape(X_test.shape[0], 28, 28, 1)
...
plt.imshow(X_train[num].reshape(28,28))

答案 1 :(得分:0)

v3.3 起,matplotlib 的 imshow 现在将大小为 MxNx1 的 3d 数组强制转换为 MxN 以进行显示,因此您可以毫无问题地绘制您的重塑 X_train