我正在尝试在 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)