卷积神经网络:每个过滤器将覆盖多少像素?
Convolutional Neural Networks: How many pixels will be covered by each of the filters?
如何计算网络中每个过滤器覆盖的区域(在原始图像中)?
例如
可以说图像的大小是 WxW 像素。
我正在使用以下网络:
layer 1 : conv : 5x5
layer 2 : pool : 3x3
layer 3 : conv : 5x5
.....
layer N : conv : 5x5
我想计算每个滤镜将覆盖原始图像中的多少区域。
例如第 1 层中的过滤器将覆盖原始图像中的 5x5 像素。
类似的问题是,每次激活会覆盖多少像素?这与输入图像必须有多大才能在一层中产生恰好一个激活基本相同?
假设一个层的过滤器大小和步幅为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,pooling之后是(17-2)/3=5(实际上是16*16和 15*15 将给出相同的结果),这正好适合第三层的一个过滤器。
如何计算网络中每个过滤器覆盖的区域(在原始图像中)?
例如 可以说图像的大小是 WxW 像素。 我正在使用以下网络:
layer 1 : conv : 5x5
layer 2 : pool : 3x3
layer 3 : conv : 5x5
.....
layer N : conv : 5x5
我想计算每个滤镜将覆盖原始图像中的多少区域。
例如第 1 层中的过滤器将覆盖原始图像中的 5x5 像素。
类似的问题是,每次激活会覆盖多少像素?这与输入图像必须有多大才能在一层中产生恰好一个激活基本相同?
假设一个层的过滤器大小和步幅为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,pooling之后是(17-2)/3=5(实际上是16*16和 15*15 将给出相同的结果),这正好适合第三层的一个过滤器。