0
根据tf.nn.conv2d doc的理解,对于SAME卷积(无论跨度)第一个dot产品应该以(0,0) 为中心,但正如您在步幅是奇数,第一点积似乎是围绕着(1,1):在这个玩具示例tensorflow conv2d even和odd stride之间的不同起始索引
输入形状[5,5,1]
滤波器形状是[3,3 , 1,1]
res = tf.nn.conv2d(X,F,strides = [1,x,x,1] ,填充= 'SAME')
跨距为1个结果:
array([[ 1.49573362, 2.65084887, 2.96818447, 3.04787111, 1.89275599],
[ 3.1941781 , 4.47312069, 4.10260868, 4.13415051, 2.85520792],
[ 2.65490007, 3.41439581, 2.93415952, 3.65811515, 2.89861989],
[ 2.22547054, 2.98453856, 2.89428496, 3.29111433, 2.53204632],
[ 0.52702606, 1.16226625, 1.75986075, 2.20483446, 1.56959426]], dtype=float32)
步幅2结果:
array([[ 1.49573362, 2.96818447, 1.89275599],
[ 2.65490007, 2.93415952, 2.89861989],
[ 0.52702606, 1.75986075, 1.56959426]], dtype=float32)
步幅3结果:
array([[ 4.47312069, 2.85520792],
[ 1.16226625, 1.56959426]], dtype=float32)
这是一个错误或者我错过了什么?
您是否尝试制作一个具有可实际计算的值的玩具示例? “正如你可以在下面看到的......”我不了解你,但我什么都看不到:很多随机数字。 –
是的,我做过了,但您只需比较输出与步幅1与步幅1的输出,因为步幅结果是步幅1结果的子采样版本。例如,您可以看到步幅3的(0,0)结果是步幅1的(1,1)结果。 – Hillel