填充和步幅 讨论区

http://zh.diveintodeeplearning.org/chapter_convolutional-neural-networks/padding-and-strides.html

请问填充和步幅的配图是不是反了?
填充的输出应该是33 而给的图片是22
同样的,步幅的输出应该是22 而给出的图片是33

是反了哈

【填充和步幅】输出的形状n_ℎ−k_w+1 不对吧,应该是n_w−k_w+1。

的确,本节第一个式子有问题

谢谢指出,已经fix了

请教一下, 在定义comp_Conv2d函数时为什么要对X做reshape ? 未明白
X = X.reshape((1, 1,) + X.shape)

增加批次(batch)和通道(channel)维度,设为1

谢谢指教!

请问一下,如果算出来总共需要的padding是个奇数,那么就做不到左右对称了,这种情况应该怎么办呢?

notebook里面写了哈 高比底多一个

那我代码应该怎么写呢?
padding=(2, 1)
这里第一个数是左右两边各需要添加的,第二个是上下两边各需要的吧。我没办法给左右或者上下设置一个不对称的padding把?

我看mxnet源码好像是不支持的, 不过自定义层可以实现,取round就可以了

上面本节中这段话是个要点

就是说卷积神经网络 经常 使用奇数高宽的卷积核,使两端填充数目相同,我想这个 经常 的目的可能是因为不希望某些边缘元素无法影响输出。
只要卷积核的高宽你选择的是奇数,就不会发生计算出来的填充数是奇数的事情。

这段话只针对步幅为1吧?之前就是想复现一个tensorflow上的网络,里面有same padding。mxnet里面,算出来需要的padding为基数的话,就加一再除以2就好了吧,右边多出来的那一个反正也不会被用到了

您好,在填充为p,步伐为s,图片为n,卷积核为k的时候,我认为输出的形状是(n-k+2*p+s)/s。

书中是:

“一般来说,如果在高的两侧一共填充 ph 行,在宽的两侧一共填充 pw 列”

p是一共填充的数量

@mli
文中描述
“如果kh是偶数,一种可能是在输入的顶端一侧填充⌈ph/2⌉行,而在底端一侧填充⌊ph/2⌋行。在宽的两侧填充同理。”

这里底端应该是填充⌊ph/2 - 1⌋行吧?

1赞

请见这里的回复:https://github.com/d2l-ai/d2l-zh/pull/523

应该是⌊(𝑛ℎ−𝑘ℎ+2𝑝ℎ)/𝑠ℎ+1⌋ * ⌊(𝑛𝑤−𝑘𝑤+2𝑝𝑤)/𝑠𝑤+1⌋ 吧

2赞