【发布时间】:2017-12-04 19:32:27
【问题描述】:
据我所知,tf.nn.conv2d doc 对于 SAME 卷积(无论步幅如何)第一个点积应该以 (0,0) 为中心 虽然正如您在下面看到的,当步幅奇数时,第一个点积似乎以 (1,1) 为中心: 在这个玩具示例中
输入形状为 [5,5,1]
滤波器形状为 [3,3,1,1]
res = tf.nn.conv2d(X, F, strides=[1,x,x,1], padding='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)
这是一个错误还是我遗漏了什么?
【问题讨论】:
-
您是否尝试过使用您可以实际计算的值制作一个玩具示例? '正如你在下面看到的......'我不了解你,但我什么都看不到:很多随机数。
-
是的,我做了,但您所要做的就是将输出与 stride 与 stride 1 的输出进行比较。因为 stride 的结果是 stride 1 结果的子采样版本。例如,您可以看到步幅为 3 的 (0,0) 结果是步幅为 1 的 (1,1) 结果。
标签: python machine-learning tensorflow deep-learning convolution