如何解释TensorFlow的卷积滤波器和跨步参数?

2024-04-07

我正在尝试了解 TensorFlow卷积 http://www.tensorflow.org/api_docs/python/nn.md#convolution,特别是公式

shape(output) = [batch,
             (in_height - filter_height + 1) / strides[1],
             (in_width - filter_width + 1) / strides[2],
             ...]

我原以为公式是

shape(output) = [batch,
             (in_height - filter_height) / strides[1] + 1,
             (in_width - filter_width) / strides[2] + 1,
             ...]

反而。从 32x32 图像开始,应用步长为 [1,3,3,1] 的 5x5 过滤器,然后根据我的理解,这应该产生 10x10 输出,其值是区域的卷积

 (0:4,0:4) ,  (0:4,3:7) ,  (0:4,6:10) , ...,  (0:4,27:31), 
 (3:7,0:4) ,  (3:7,3:7) ,  (3:7,6:10) , ...,  (3:7,27:31),
...
(27:31,0:4), (27:31,3:7), (27:31,6:10), ..., (27:31,27:31)

所以两个尺寸都应该是floor((32-5)/3)+1=10 而不是floor((32-5+1)/3)=9。我在这里缺少什么?我是否误解了这里进行卷积的方式和/或参数的含义?如果是这样,我应该使用什么参数才能获得上述选择?


根据问题 #196 https://github.com/tensorflow/tensorflow/issues/196,这部分文档显然是错误的;我觉得dga的回答还是有问题的。

它应该是:

地板((in_height + y_padding-filter_height)/ y_stride)+ 1,

  • 当padding=VALID时,y_padding=0。
  • 当padding=SAME时,通常应该调整y_padding以使(in_height+y_padding-filter_height)/y_stride为整数,使得'floor'变得不必要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解释TensorFlow的卷积滤波器和跨步参数? 的相关文章

随机推荐