如何计算网络中每个过滤器所覆盖的区域(原始图像中)?
例如
可以说图像的大小是WxW像素.
我使用以下网络:
layer 1 : conv : 5x5
layer 2 : pool : 3x3
layer 3 : conv : 5x5
.....
layer N : conv : 5x5
我想计算每个滤镜覆盖原始图像中的区域.
例如图层1中的滤镜将覆盖原始图像中的5×5像素.
最佳答案 类似的问题是,每次激活会覆盖多少像素?这与输入图像的大小基本相同,以便在图层中产生一次激活?
假设一个层的过滤器大小和步幅是k和s,输入的大小是x * x,我们有(((x-k1 1)/ s1-k2 1)/ s2 … / sn)= 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.
在您的示例中,第一层的sum_1d为5,第二层为5 * 1 3-1 = 7,第三层为5 * 3 2 4 = 21(我假设池化层不重叠, S = 3)..
您可以通过反向验证这一点,比如输入是21 * 21,在第一层之后是17 * 17,汇集后是(17-2)/ 3 = 5(实际上是16 * 16和15 * 15将给出相同的结果),它恰好适合第三层中的一个过滤器.