如何计算网络中每个过滤器所覆盖的区域(原始图像中)?
e.g。 可以说图像的大小是WxW像素。 我使用以下网络:
layer 1 : conv : 5x5
layer 2 : pool : 3x3
layer 3 : conv : 5x5
.....
layer N : conv : 5x5
我想计算每个过滤器将覆盖原始图像中的区域。
e.g。第1层中的滤镜将覆盖原始图像中的5x5像素。
答案 0 :(得分:1)
类似的问题是,每次激活会覆盖多少像素?这与输入图像的大小基本相同,以便在图层中产生一次激活?
假设图层的过滤器大小和步幅为k
和s
,输入的大小为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将给出相同的结果),它恰好适合第三层中的一个滤波器。