我正在使用Keras的Conv2D
方法。在documentation中写着
填充:“有效”或“相同”之一(不区分大小写)。请注意,“相同” 在跨步为!= 1的后端之间稍微不一致,因为 描述了here
作为输入,我有大小为(64,80,1)的图像,并且我正在使用大小为3x3的内核。这是否意味着在使用Conv2D(32, 3, strides=2, padding='same')(input)
时填充错误?
如何使用ZeroPadding2D修复它?
答案 0 :(得分:1)
根据您的评论,看到您定义的跨度为2,我相信您要实现的输出大小恰好是输入大小的一半,即output_shape == (32, 40, 32)
(第二个32是要素)
在这种情况下,只需在最终模型上调用model.summary()
,您就会发现情况是否如此。
如果是,则无需执行其他操作。
如果它大于所需的大小,则可以添加一个Cropping2D
层以从图像的边界处切除像素。
如果它小于所需的大小,则可以添加一个ZeroPadding2D
图层,以将零像素添加到图像的边界。
创建这些图层的语法是
Cropping2D(cropping=((a, b), (c, d)))
ZeroPadding2D(padding=((a, b), (c, d)))
a
:要添加到顶部/从顶部切掉的行数b
:要添加到/从底部切掉的行数c
:您要添加到/从左边切掉的列数d
:要添加到/从右边切掉的列数但是请注意,对于每个卷积层,总是没有完美的一半大小的严格技术要求。您的模型可能运行良好,没有任何填充或裁剪。您将不得不对其进行实验才能找到答案。