批量归一化BN:
参考:https://blog.csdn.net/littlelanlan/article/details/100042198
在加上本人的一点补充:
1. 概述
批量归一化(batch normalization)层,它能让较深的神经网络的训练变得更加容易 。在之前,我也整理了pytorch中对输入数据做了标准化处理的方法数据归一化处理transforms.Normalize():处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。标准化处理输入数据使各个特征的分布相近:这往往更容易训练出有效的模型。
通常来说,数据标准化预处理对于浅层模型就足够有效了。随着模型训练的进行,当每层中参数更新时,靠近输出层的输出较难出现剧烈变化。但对深层神经网络来说,即使输入数据已做标准化,训练中模型参数的更新依然很容易造成靠近输出层输出的剧烈变化。这种计算数值的不稳定性通常令我们难以训练出有效的深度模型。
批量归一化的提出正是为了应对深度模型训练的挑战。在模型训练时,批量归一化利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定**。批量归一化和之后将要介绍的残差网络为训练和设计深度模型提供了两类重要思路。**
2. 批量归一化层
对全连接层和卷积层做批量归一化的方法稍有不同。下面将分别介绍这两种情况下的批量归一化。
2.1 对全连接层做批量归一化
先