1. BN层原理
torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True,device=None,dtype=None)
-
为什么用BN?
加速训练。之前训练慢是因为在训练过程中,整体分布逐渐往非线性函数的取值区间的上下限端靠近(参考sigmoid函数,大的正值或负值),链式求导导致低层的神经网络梯度消失。BN就是将越来越偏的分布强行拉回(标准)正态分布,使得激活值落在非线性函数对输入比较敏感的区域,这样输入小的变化就会导致损失函数较大变化,让梯度变大,避免梯度消失问题。 -
为什么要给BN的分布乘以可学习参数γ\gammaγ和β\betaβ?
如果强行归一化为标准正态分布,则之前该层学习到的分布也丢失信息。引入这两个重构参数,来使得我们的网络中可以学习恢复出原始网络要学习的特征分布. -
公式(torch):
y=x−E[x]Var[x]+ϵ×γ+β y = \frac{x-E[x]}{\sqrt{Var[x]+\epsilon}}\times \gamma + \beta y=Var[x]+ϵx−E[x]×γ+β

-
反向传播.
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6uCO3wH-1689670017182)(:/b9265fb96a1348ee97121a7aba9a92be)]](https://i-blog.csdnimg.cn/blog_migrate/936f1be28a6f7e703db392ec8fd46b76.png)
-
均值和方差是在mini-batch的每一个维度上分别计算的
-
因为是再CC

BN层用于加速训练,防止梯度消失,通过拉回激活值分布至标准正态分布。γ和β用于保持层间信息。LayerNorm沿通道维度归一化,而InstanceNorm针对每个样本的通道单独计算。GroupNorm介于两者之间,按通道分组归一化,提供更好的灵活性。
最低0.47元/天 解锁文章
2808

被折叠的 条评论
为什么被折叠?



