我使用大小为 150x150 的灰度图像训练了 CNN,并且训练没有任何错误,但是,每当我尝试运行 model.predict() 函数时,我都会收到此错误:
预期 convolution2d_input_1 有 4 个维度,但得到的数组形状为 (150, 150, 1)
尽管我对传递给预测函数的图像进行了与用于训练 CNN 的图像完全相同的预处理。它们的大小为 150x150x1,就像我在 CNN 中的输入形状以及我用来训练 CNN 的图像的形状一样。
这是我的 CNN:
model = Sequential()
model.add(Conv2D(32, 3, 3, input_shape=(150, 150, 1), activation =
'relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, 3, 3, activation = 'relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, 3, 3, activation = 'relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation = 'softmax'))
输入的大小为 150x150x1,我的 CNN 表示它需要的预期输入是 (None, 150, 150, 1)
我已经尝试解决这个问题好几天了,但没有任何运气。
最佳答案
如果您尝试对单个图像进行预测,您应该添加一个维度,然后进行如下预测:
import numpy as np
img = np.expand_dims(img, axis=0)
prediction = model.predict(img)
关于python - 期望 volvo2d_input_1 有 4 个维度,但得到形状为 (150, 150, 1) 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889999/