Python tensorflow conv2d的填充策略是什么?

Python tensorflow conv2d的填充策略是什么?,python,tensorflow,convolution,Python,Tensorflow,Convolution,我跟着老师的问答 然而,我仍然对tf.nn.conv2d的开始索引和填充策略感到困惑。在我进行了以下测试之后,希望有人能在这里给我一个线索,特别是关于奇数和偶数的步幅 数组高度(h)、内核大小(f)、步幅数(s) 矩阵左栏(pl)上的填充编号和右栏(pr)上的填充编号x 在卷积池的情况下,零填充应该围绕数组x填充,就像我定义xp的方式一样,但是,我无法计算它的开始索引是如何填充的 原点矩阵x x shape: (1, 4, 4, 1) kernel: 3 stride: 2 [[ 0

我跟着老师的问答

然而,我仍然对tf.nn.conv2d开始索引和填充策略感到困惑。在我进行了以下测试之后,希望有人能在这里给我一个线索,特别是关于奇数和偶数的步幅

数组高度(h)、内核大小(f)、步幅数(s)

矩阵左栏(pl)上的填充编号和右栏(pr)上的填充编号x

在卷积池的情况下,零填充应该围绕数组x填充,就像我定义xp的方式一样,但是,我无法计算它的开始索引是如何填充的

原点矩阵x

x shape:  (1, 4, 4, 1)  kernel:  3  stride:  2 
[[ 0  1  2  3]
[ 4  5  6  7]
[ 8  9 10 11]
[12 13 14 15]]
在“相同”类型的卷积中,在这种情况下,为什么tf.nn.conv2d不在左侧补零?

'SAME' os shape:  (1, 2, 2, 1) 
[[45. 39.]
[66. 50.]]
矩阵x上的有效卷积

'VALID' ov shape:  (1, 1, 1, 1) 
[[45.]]
xp中零填充后的有效类型卷积(如我预期的结果)

'VALID' op shape:  (1, 2, 2, 1)  pl:  1  pr:  1 
[[10. 24.]
[51. 90.]]
(总)填充的公式解释如下:

在您的情况下,
n mod s=4 mod 2=0
so

p = max(3 - 2, 0) = 1
所以


这就解释了为什么在左边看不到任何填充物。

谢谢!这就是我想要的,无论如何,我相信你的意思是:
n mod s=4 mod 2=0而不是2。
'VALID' op shape:  (1, 2, 2, 1)  pl:  1  pr:  1 
[[10. 24.]
[51. 90.]]
p = max(3 - 2, 0) = 1
p_left = p // 2 = 0
p_right = 1 - p_left = 1