当前位置:   article > 正文

【PyTorch】BatchNorm方法原理和使用_batchnorm提出的背景

batchnorm提出的背景

BatchNorm是2015年由Sergey Ioffe和Christian Szegedy在论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》中提出的,目的是加快深度神经网络的训练速度,提高训练精度

1 提出背景

  • 深度神经网络学习很慢,原因之一是每层输入的分布都会改变,导致参数难以较快收敛
  • 应对参数难以收敛的问题,还需仔细设计模型参数初始化,并采用较小的学习率,使得训练过程更长
  • 上述现象称为internal covariate shift(ICS),解决办法就是增加归一化层(BatchNorm)进行处理
  • BatchNorm是面向训练小批次数据,可以使用较大学习率
  • BatchNorm类似于一种正则化方法,在某些场景下可以替代Dropout

2 操作流程

  • 对每层输入进行归一化:转化为服从N(0,1)的正态分布数据,公式为:x’=(x-u)/σ,其中u和σ是根据输入x计算得到的均值和标准差,归一化可以加速训练过程,但也改变数据分布特征
  • 对归一化数据进行缩放和平移:采用参数β和γ进行转化,公式为y=γx’+β,在特殊情况下,β和γ与u和σ取值相同时,则BatchNorm操作不改变原始数据分布

3 算法流程

这里给出论文中算法伪代码,包括归一化参数u和σ的计算过程,输入数据x的归一化过程,输入数据的缩放和平移过程。以卷积神经网络为例,BatchNorm在网络中的位置是卷积层之后,激励函数ReLU作用之前。
在这里插入图片描述

4 PyTorch中使用方式

  • 调用方法:在torch.nn模块中,即torch.nn.BatchNorm2d§,p是数据维度
  • 使用位置:在构建隐层的函数nn.Sequential()的参数中
  • 训练时使用,测试时要固定参数,即测试前使用model.eval()
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/606271
推荐阅读
相关标签
  

闽ICP备14008679号