ValueError:输入0与层conv2d_5不兼容:预期ndim = 4,找到的ndim = 2

时间:2019-02-26 02:20:05

标签: python keras neural-network artificial-intelligence conv-neural-network

我正在尝试建立一个CNN网络,并想使用output_shape探测层的尺寸。 但这给了我一个错误,如下所示:

  

ValueError:输入0与层conv2d_5不兼容:预期ndim = 4,发现ndim = 2

下面是我要执行的代码

from keras.layers import Activation

model = Sequential()
model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(1,28,28)))

print(model.output_shape)

1 个答案:

答案 0 :(得分:0)

您可以检查默认情况下是否在最后指定了通道数

from keras import backend as K
print(K.image_data_format()) # print current format

在我的系统上,这将显示“ channel_last”,这表示您的input_shape(28)的最后一个数字是通道数,而1是行数。  这也是Keras给出错误的原因,因为您无法将3 x 3卷积蒙版应用于只有1行的图像(默认填充设置为“有效”)。

您很有可能要将input_shape设置为(28, 28, 1)

另外,如果您希望内核为3 x 3内核,则应该为

model.add(Convolution2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))

您当前拥有的是一个卷积层,其内核大小为3 x 3 ,且步幅为3。