如果我通过以下方式在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)
我可以让神经网络工作,但我不能再绘制它了。重塑它的正确方法是什么,这样我仍可以绘制东西?
谢谢!
答案 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
。