【发布时间】:2018-02-17 12:22:30
【问题描述】:
我已经使用 Python 中的 Keras 库训练了一个手写图像分类器。最初,我使用标准 MNIST 数据集进行训练和测试。但是现在我想用我自己的数据集进行测试,其中所有图片的大小都是900*1200*3而不是28*28*1
所以我需要在测试之前重塑所有图像。我正在使用以下代码来重塑,但它给出了错误。
代码:
bb = lol.reshape(lol.shape[0], 28, 28, 1).astype('float32')
lol 是我的 numpy 数组,其中包含 55 张形状为 (900,1200,3) 的图像
错误日志如下:
ValueError Traceback (most recent call last)
<ipython-input-46-87da95da73e9> in <module>()
24 # # you can show every image
25 # img.show()
---> 26 bb = lol.reshape(lol.shape[0], 28, 28, 1).astype('float32')
27 # model = loaded_model
28 # classes = model.predict(bb)
ValueError: cannot reshape array of size 178200000 into shape (55,28,28,1)
那我做错了什么?即使将大图像调整为 28*28 的非常小的图像,我也能得到准确的预测吗?感谢帮助。
【问题讨论】:
-
您不应该更改:
lol.reshape(lol.shape[0], 28, 28, 1).astype('float32')以使用新的图像形状,即900 x 1200x 3? -
900 x 1200x 3是我目前的形状。我想重塑28,28,1 -
你知道
reshape是做什么的吗? -
您无法在大小为
55 x 28 x 28 x 3的对象中重塑大小为55 x 900 x 1200 x 3的对象而不丢失数据。您需要调整图像大小,而不是重塑数组。 -
是的,这是 RGB -> 灰度 (3 -> 1) + 调整大小。这不是 reshape 所做的。
标签: python arrays numpy machine-learning