阅读笔记2——BN层(Batch Normalization)

BN层通过白化操作和线性变换解决深度网络的训练难题,缓解梯度消失,加速收敛,简化调参并防止过拟合。在Pytorch中,通过nn.BatchNorm2d模块应用BN层。然而,BN层在小batch大小下效果受限,且测试依赖训练集。

一、BN层

1. 背景

  为了追求更高的性能,卷积网络被设计得越来越深,然而网络却变得难以训练收敛与调参

2. 原因

  浅层网络的微弱变化经过多层线性变换与激活函数后会被放大,改变了每一层的输入分布,造成深层的网络需要不断调整以适应这些分布变化,最终导致模型难以训练收敛。

3. ICS现象

  由于网络中参数变化导致的内部节点数据分布发生变化的现象被称为ICS(Internal Covariate Shift)。ICS现象容易使训练过程陷入饱和区,减慢网络的收敛。

4. 解决方法

  2015年提出的BN层,从改变数据分布的角度避免了参数陷入饱和区。

  BN层首先对每一个batch的输入特征进行白化操作,即去均值方差过程。假设一个batch的输入数据为xxxB=B=B= { x1x_{1}x1,x2x_{2}x2,.........,xmx_{m}xm},首先求该batch数据的均值与方差,如式(1-1)和式(1-2)所示。

μB=1m∑i=1mxi(1-1)\mu _{B}= \frac{1}{m}\sum_{i=1}^{m}x_{i}\tag{1-1} μB=m1<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓shuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值