我正在尝试建立一个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)
答案 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。