全连接层后面加bn层_卷积层和BN层融合

常规的神经网络连接结构如下

当网络训练完成, 在推导的时候为了加速运算, 通常将卷积层和 batch-norm 层融合, 原理如下

\[ \begin{align*} y_{conv} &= w \cdot x + b \\ y_{bn} &= \gamma \cdot \left (\frac{y_{conv} – E[x]}{\sqrt{Var[x] + \epsilon}} \right)+\beta \\ &= \gamma \cdot \left (\frac{wx+b – E[x]}{\sqrt{ Var[x] + \epsilon}} \right)+\beta \\ \hat w &= \frac{\gamma}{\sqrt{Var[x] + \epsilon}}\cdot w \\ \hat b &= \frac{\gamma}{\sqrt{Var[x] + \epsilon}}\cdot \left({b – E[x]} \right)+\beta \\ y_{bn} &= \hat w \cdot x + \hat b \\ \end{align*} \]

推导时, E[x] 为 runnin_mean(滑动均值), Var[x] 为 running_var(滑动方差),

pytorch 的 running_var 存储的是方差, 而不是标准差

caffe 中的 conv-bn-scale-relu 结构

caffe模型的转化可以参考pvanet的卷积层和 batch-norm融合代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
连接层(Fully Connected Layer)是神经网络中的一种基本层结构,它的作用是将上一层的输入节点与下一层的所有节点进行连接,每个连接都有一个权重。连接层的输出可以进行非线性变换,常用的非线性函数有ReLU、Sigmoid等。连接层在深度学习领域中被广泛应用于图像分类、物体检测等任务中,它可以学习到不同特征之间的关联性。 Batch Normalization层(BN层)是一种用于解决神经网络中内部协变量偏移(Internal Covariate Shift)的技术。在训练过程中,每一层的输入分布会随着参数的更新而发生变化,导致网络的训练变得复杂且慢。BN层通过在每一层的输入进行归一化操作,将输入数据变成均值为0、方差为1的标准正态分布,从而减少梯度消失和梯度爆炸的问题,快网络的收敛速度,提高训练效果。 批量归一化层(Batch Normalization)是深度学习中一种常用的正则化方法,其主要目的是使每一层的输入数据的均值和方差保持在一个稳定的范围内。它通过对每一批训练数据进行统计分析,计算出均值和标准差,然后根据这些统计量对输入数据进行归一化处理。批量归一化层不仅可以速网络的收敛速度,还可以提高模型的泛化能力,降低过拟合的风险。此外,批量归一化层还可以增网络的鲁棒性,使模型对于输入数据的变化更稳定。 综上所述,连接层、BN层和批量归一化层是深度学习中常用的网络单元分析技术。连接层用于连接上下层的所有节点并实现非线性变换,BN层解决了神经网络中内部协变量偏移的问题,速网络的收敛速度并提高模型的泛化能力,而批量归一化层通过对输入数据进行归一化处理,使网络更稳定和鲁棒。这些技术在深度学习任务中起到了关键的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值