首页 > 解决方案 > 深度学习:在改变 MNIST 图像大小时无法重塑数组

问题描述

我是深度学习的新手。我正在尝试将 mnist 图像从 28 * 28 更改为 224 * 224。

所以我决定使用reshape方法。导入 MNIST 数据集后,我尝试对其进行重塑:

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

X_train = X_train.reshape(X_train.shape[0], 224, 224, 1).astype('float32')

我正在尝试将所有 MNIST 图像更改为新大小,但出现此错误:

X_train = X_train.reshape(X_train.shape[0], 224, 224, 1).astype('float32')
Traceback (most recent call last):

  File "<ipython-input-3-9d12d34bfd75>", line 1, in <module>
    X_train = X_train.reshape(X_train.shape[0], 224, 224, 1).astype('float32')

ValueError: cannot reshape array of size 47040000 into shape (60000,224,224,1)

如何将所有 MNIST 图像尺寸更改为新尺寸?

标签: deep-learningmnist

解决方案


正如@datdinhquoc 评论中所说, 重塑保持相同的字节数

例如,如果您有形状 (4,3) 的数组,则基本上有 m * n 即 12 (4*3) 个元素。现在,您可以将其重新整形为乘法得到 12 的任何大小。因此,将数组 cab 重新整形为大小 (2,6) 或 (12,1) 。

在您的情况下,有 60,000 个大小为 (28, 28) 的元素,因此总共有 (60,000 * 28 * 28) 并且尝试使其成为 (60,000 * 224 * 224),这显然是不可能的。

您想要缩放或调整图像大小。表示你想增加它的字节数。在这种情况下,您可以使用 openCV 调整大小功能,如下所示

 resized_image = cv2.resize(image, (224, 224))   

因此,您需要一张一张地调整所有图像的大小。


推荐阅读