卷积神经网络:每个滤波器将覆盖多少像素?

时间:2016-04-15 12:02:18

标签: neural-network deep-learning caffe convolution conv-neural-network

如何计算网络中每个过滤器所覆盖的区域(原始图像中)?

e.g。 可以说图像的大小是WxW像素。 我使用以下网络:

layer 1 : conv :  5x5
layer 2 : pool :  3x3
layer 3 : conv :  5x5
.....
layer N : conv :  5x5

我想计算每个过滤器将覆盖原始图像中的区域。

e.g。第1层中的滤镜将覆盖原始图像中的5x5像素。

1 个答案:

答案 0 :(得分:1)

类似的问题是,每次激活会覆盖多少像素?这与输入图像的大小基本相同,以便在图层中产生一次激活?

假设图层的过滤器大小和步幅为ks,输入的大小为x*x,我们有(((x-k1+1)/s1-k2+1)/s2.../sn)=1和{{1}可以很容易地解决。

原始问题等同于输入图像必须有多大才能在图层中产生一次激活,而不考虑最后一层的步幅?

所以答案是x,应该通过以下伪代码计算

x/sn

然后像素的总量为x = layer[n].k from i = n-1 to 1 x = x*layer[i].s + layer[i].k - 1

在您的示例中,第一层的x*x为5,第二层的sum_1d为5 * 1 + 3-1 = 7,第三层为5 * 3 + 2 + 4 = 21(I'假设汇集层不重叠,s = 3)..

您可以通过反向验证这一点,比如说输入是21 * 21,在第一层之后它是17 * 17,汇集后是(17-2)/ 3 = 5(实际上是16 * 16和15) * 15将给出相同的结果),它恰好适合第三层中的一个滤波器。