我正在努力理解TensorFlow的卷积,尤其是这个公式:
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像素的图像开始,并应用一个5x5的滤波器,步幅为[1,3,3,1],那么根据我的理解,这应该会产生一个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。我在这里错过了什么?我是否误解了卷积的方式和/或参数的含义?如果是这样,我应该使用哪些参数才能获得上述选择?