最近在组会讲解框架时,在感受野这个小知识点,大家开始产生歧义,今天我就简单的给大家讲解下这个小知识点,也给初学者带来一个对Receptive Field崭新的认识,如果对只是有深入了解的你,就可以直接跳过O(∩_∩)O~~!
现在开始进入正题!!!
以前我的理解就是,感受野嘛,其实那就是一个视觉感受区域大小。对于单层网络来说,下一层的一个像素点其感受野大小也就是卷积层滤波器的大小,想想其实很明了的就理解了,但对于多层,那就有一点点(也就那么一点点复杂而已)!
正式定义:
在神经网络中,感受野的定义是:
卷积神经网络的每一层输出的特征图(Feature ap)上的像素点在原图像上映射的区域大小。
自己随便画了一个例图,主要看内容,O(∩_∩)O谢谢!
链接: http://pan.baidu.com/s/1nvMzrOP 密码: 2ehd
有读者说有动图就好了,我就截取了一个,请大家欣赏!
现在就开始来说怎么计算吧!(看点来了)其实很简单!
首先可以简单知道(前面也提及到了),第一层卷积层的输出特征图像素的感受野的大小就等于等于卷积层滤波器的大小;然后其继续进行前向传播,这样的话,后面深层的卷积层感受野大小就和之前所有网络层的滤波器大小和步长有关系了,在计算的时候,忽略图像Padding的大小。网络中的每一个层有一个strides,该strides是之前所有层stride的乘积,即:
查资料知,感受野大小的计算采用从深层到前层的方式计算, 即先计算最深层在前一层上的感受野,然后逐渐反馈到第一层,公式具体记如下:
其中
为得的感受野大小,
为最后层在前一层的感受野大小,
为卷积层滤波器大小。
通过这样反复迭代就可以得到每一层的感受野。具体代码我看网上也有,我就顺便附一下吧,原件请在链接里下载,谢谢!
链接: http://pan.baidu.com/s/1jIHLGJc
密码: ayuc
具体仿真结果我是用Windows版的Python 3.5 (32-bit)运行得到的,具体如下图: