Skip to main content
 首页 » 编程设计

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

2025年05月04日22linjiqin

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

可以看出,第二个卷积层有 256 个大小为 5x5 的过滤器、48 个 channel 和 [ 2 2 2 2 ] 的填充。我如何使用 Keras 指定 [ 2 2 2 2] 的 padding?我浏览了 documentation of Conv2D .它只接受 2 个填充值,即 valid 和 same。我无法理解这一点。据我所知,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))) 

另外,由于第二层有48个 channel ,是否需要明确说明?

请您参考如下方法:

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")) 

我还强烈建议查看此 keras implementation of alexnet .请注意,您还可以在 the keras convolutional docs 中找到填充层的文档。 (一直在底部)。