你能在下面的问题上帮我吗?我已经为MNIST数据集编写了以下代码。总而言之,第一个输出对我来说是可以的。但是我不确定为什么(None, 30, 24, 32)会显示在第二层。
在32*26*26上应用32(3*3)过滤器时,输出应为32*24*24。
先谢谢你...
model = Sequential()
model.add(Convolution2D(32, (3, 3), activation='relu', input_shape=(1,28,28), data_format='channels_first'))
model.add(Convolution2D(32,3,3))
model.summary()Layer (type) Output Shape Param #
=================================================================
conv2d_102 (Conv2D) (None, 32, 26, 26) 320
_________________________________________________________________
conv2d_103 (Conv2D) (None, 30, 24, 32) 7520 发布于 2019-12-29 19:13:32
在第3- model.add(Convolution2D(32,3,3))行中,第二个参数kernel_size被分配了3,第三个参数stride被分配了3,而不是kernel_size被分配了(3,3)或3,而stride被分配了1。
作为参考,来自Keras docs的Convolution2D定义为:
`keras.layers.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', ...)`因此,必须将第3行修改为:model.add(Convolution2D(32,(3,3)))或model.add(Convolution2D(32,3,1)),或者仅修改为model.add(Convolution2D(32,3))以实现所需的卷积。
注意:还必须将data_format设置为channels_first,才能使输出具有shape:(None,32,24,24)
https://stackoverflow.com/questions/59516700
复制相似问题