【深度学习】感受野(receptive fields)概念计算及如何增加感受野总结

本文总结了深度学习中感受野的概念,计算方法以及如何增加感受野以提高模型性能。通过增加层数、增大 strides 和卷积核大小等方法可增大感受野,但可能引发精度损失或梯度消失问题。在CPM模型中,作者通过多阶段训练和中间层监督解决梯度消失,使用增加卷积层数目来扩大感受野。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在深度学习论文里,经常会看到感受野(receptive fields), 根据自己看到的和网上资料稍微整理总结一下。

感受野的定义

感受野是卷积神经网络(CNN)每一层输出的特征图(feature map)上的像素点在原始输入图像上映射的区域大小[1]
这里写图片描述

感受野的计算

感受野的计算从最深层开始向浅层计算,逐步计算到第一层(即上图的蓝色层开始向红色层传递计算),所以计算前要知道网络的整体结构和参数。
计算公式:

'''
RF: 待计算的feature map上的感受野大小
stride: 卷积的步长(之前所有层stride的乘积)
fsize: 卷积层滤波器的大小
'''
RF = 1
for layer in (high layer To low layer):
  RF = ((R
### 关于感受野计算公式及其在卷积神经网络中的应用 #### 感受野概念 感受野Receptive Field, RF)是指卷积神经网络中某个特定节点所覆盖的输入数据区域大小。随着网络层数加深,感受野通常会逐渐增大,这使得高层节点可以捕获更大范围的空间信息[^2]。 #### 感受野计算公式 对于卷积神经网络而言,感受野的大小可以通过递推的方式进行计算。假设当前层的感受野为 \(R\),则下一层的感受野可以根据以下公式更新: \[ R_{l+1} = R_l + (k - 1) \times S^l \] 其中: - \(R_l\) 表示第 \(l\) 层的感受野; - \(k\) 是该层卷积核的尺寸; - \(S^l\) 是从输入到第 \(l\) 层之间的步长累积乘积;即如果某层之前的每一层步长分别为 \(s_0, s_1, ..., s_{l-1}\),那么 \(S^l = \prod_{i=0}^{l-1}s_i\)。 需要注意的是,在实际操作过程中容易混淆某些概念,比如误将反向传播过程中的中间变量当作感受野的实际定义,从而得出错误结论[^3]。 #### 应用实例 为了更好地理解上述理论知识,下面给出一段 Python 实现代码用于模拟简单的两层卷积运算并打印每一步对应的感受野变化情况: ```python def compute_receptive_field(kernel_sizes, strides): receptive_fields = [1] for i in range(len(kernel_sizes)): prev_rf = receptive_fields[-1] current_kernel_size = kernel_sizes[i] stride_product = sum(strides[:i]) if i != 0 else 1 new_rf = prev_rf + (current_kernel_size - 1)*stride_product receptive_fields.append(new_rf) return receptive_fields if __name__ == "__main__": kernels = [3, 5] # 假设我们有两次连续卷积操作分别采用3x3和5x5滤波器 steps = [1, 2] # 对应每次卷积使用的步幅 rfs = compute_receptive_field(kernels, steps) print(f"各层感受野依次为:{rfs}") ``` 通过运行此脚本可直观看到不同参数配置下的感受野扩展规律。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值