期望卷积2d_input_1有4个维度,但得到形状的数组(150,150,1)

时间:2017-12-19 15:16:46

标签: python machine-learning deep-learning keras conv-neural-network

我训练了我的CNN,大小为150x150的灰度图像,训练没有任何错误,但是,每当我尝试运行model.predict()函数时,我都会收到此错误:

expected convolution2d_input_1 to have 4 dimensions, but got array with shape (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所说的预期输入是(无,150,150,1)

我一直试图解决这个问题好几天但却没有运气。

1 个答案:

答案 0 :(得分:4)

如果您尝试对单个图像进行预测,则应添加一个维度,然后进行如下预测:

import numpy as np
img = np.expand_dims(img, axis=0)
prediction = model.predict(img)