如何在 Conv2D 层中使用 keras 指定填充?

Suh*_*pta 3 python computer-vision conv-neural-network keras tensorflow

我正在尝试使用Keras实现AlexNet,并正在检查 MATLAB 中的网络设计,如下所示

在此处输入图片说明

可以看出,第二个卷积层有 256 个大小为 5x5 的滤波器、48 个通道和 [2 2 2 2] 的填充。我怎么能用paddingKeras指定[2 2 2 2] ?我浏览了Conv2D文档。它只接受 2 个填充值,即validsame。我无法理解这一点。据我所知,valid这意味着零填充。我怎么能用第二个卷积层指定 [2 2 2 2] 填充?我将第一层创建为:

model.add(keras.layers.Conv2D(filters = 96, kernel_size = (11,11), 
 strides = (4,4), padding = "valid", input_shape=(227,227,3)))
Run Code Online (Sandbox Code Playgroud)

另外,因为在第二层有 48 个通道,我需要明确说明它吗?

Pri*_*usa 8

特定的填充Conv2D不是在ZeroPadding2D层中指定的,而是在层中指定的。

valid并且same实际上只是常见填充的简写 -valid意味着您不填充输入并same意味着您添加填充以使输出长度与输入长度相同。

在您的情况下,如果您想添加大小为 2 的特定填充:

model.add(keras.layers.ZeroPadding2D(padding=(2, 2)))
model.add(keras.layers.Conv2D(filters = 96, kernel_size = (11,11), strides = (4,4), padding = "valid"))
Run Code Online (Sandbox Code Playgroud)

我还强烈建议查看alexnet 的这个keras 实现。请注意,您还可以在keras 卷积文档中找到填充层的文档(一直在底部)。