CNN中的感受野总结

最近面试问到了有关感受野的知识,所以总结 了一下:

参考链接:CNN中感受野的计算深度学习中的感受野计算

定义:感受野就是网络中输出特征图对应输入图像的区域。简单地说,就是特征图里面的一个元素受输入图像多大区域像素的影响。

所以根据定义,如果我们只计算某两个连续层之间的感受野,则可以通过直接画图,看输入图像多大的范围对应特征图中的一个点来确定两者之间的感受野。

但是,如果网络比较深,那么计算最后的特征图和输入图像的感受野,则变得异常麻烦。好在有人已经总结了公式,如下:

F\left ( i,j-1 \right ) = k_j +\left ( F\left ( i,j \right ) -1\right )*s_j

k_j表示的第j层的kernel_size,s_j表示第j层的stride.这个式子分为两部分,一部分是指k_j,即局部感受野,另一部分是stride,可理解为当前层在每多一个原子,上一层的感受野多增加stride个(在第一个局部感受野的基础上增加的;

其中,F(i,i)=1;i为最后一层,0为输入层。一般算到F(i,0)。

 

下面我拿一个例子来算算:

 

 

 

 

 

 

 

 

 

 

 

答案如下:

pool3的一个输出对应pool3的输入大小为2*2

对应conv4的输入为4*4

对应conv3的输入为6*6

对应pool2的输入为12*12

对应conv2的输入为14*14

对应pool1的输入为28*28

对应conv1的输入为30*30

所以pool3的感受野大小就是30*30

 

卷积中的特征图大小计算方式有两种,分别是‘VALID’和‘SAME’,卷积和池化都适用,除不尽的结果都向上取整。

 

1.如果计算方式采用'VALID',则:

其中为输出特征图的大小,为输入特征图的大小,F为卷积核大小,stride为卷积步长。

2.如果计算方式采用'SAME',输出特征图的大小与输入特征图的大小保持不变,

其中padding为特征图填充的圈数。

若采用'SAME'方式,kernel_size=1时,padding=0;kernel_size=3时,padding=1;kernel_size=5时,padding=3
--------------------- 
作者:HelloZEX 
来源:CSDN 
原文:https://blog.csdn.net/HelloZEX/article/details/81109136 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值