小编ATH*_*AGI的帖子

当步幅大于 1 时,SAME 填充如何在卷积神经网络中工作?

我正在尝试在 python 中实现二维卷积。我有一个尺寸为 (m, 64, 64, 3) 的输入图像集,其中 m 是图像数量。我想对高度和宽度使用过滤器大小 f=8 和 stride=8,并使用相同的填充,以便保留输入宽度和高度 (64, 64)。

使用公式[n' = Floor((n-f+2*pad)/stride + 1)]并输入 n'=64, n=64, stride=8, f=8,我得到pad=224,其中太大了。

例如,当我将图像数量 m 设置为 1080 时,可能会导致内存错误,导致我的系统崩溃。

但是当我使用 Keras 库和以下代码时,它工作得很好。

X = keras.layers.Conv2D(filters=32, kernel_size=(8, 8), strides=(8, 8), padding='same')(X)
Run Code Online (Sandbox Code Playgroud)

这是我在 python 中实现的 Conv2D:

import numpy as np

# A.shape = (1080, 64, 64, 3)
# W.shape = (8, 8, 3, 32)
# b.shape = (32,)

def conv_fwd(A, W, b, pad=0, stride=1):
    pad_A = np.pad(A, ((0, …
Run Code Online (Sandbox Code Playgroud)

python conv-neural-network keras tensorflow zero-padding

5
推荐指数
1
解决办法
2808
查看次数