Pytorch学习笔记-06 Normalization layers

Pytorch学习笔记-06 Normalization layers

文章目录

  • Pytorch学习笔记-06 Normalization layers
    • Why Normalization
    • Batch Normalization
    • Layer Normalization
    • Instance Normalization
    • Group Normalization
    • 小结

Why Normalization

Internal Covariate Shift (ICS):数据尺度 分布异常,导致训练困难

Batch Normalization

Batch Normalization :批标准化
批:一批数据,通常为 mini batch

《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 》
优点:

  • 可以 用 更大学习率,加速模型收敛
  • 可以 不用 精心设计权值初始化
  • 可以 不用 dropout 或较小的 dropout
  • 可以 不用 L2 或者较小的 weight decay
  • 可以 不用 LRN(local response normalization)

_
BatchNorm
nn.BatchNorm1d
nn.BatchNorm2d
nn.BatchNorm3d
参数:

  • num_features :一个样本特征数量(最重要
  • e p s :分母修正项
  • momentum :指数加权平均估计当前 mean/ var
  • affine :是否需要 affine transform
  • track_running_stats :是训练状态,还是测试状态

Layer Normalization

起因:
BN 不适用于变长的网络,如 RNN
思路:
逐层 计算均值和方差

注意事项:
不再有 running_mean 和 running_var

gamma 和 beta 为逐元素的

主要参数:

  • normalized_shape :该层特征形状

  • eps :分母修正项

  • elementwise_affine :是否需要 affine

    transform

Instance Normalization

起因:
BN 在图像生成( Image Generation )中不适用
思路:
逐 Instance channel 计算均值和方差

主要参数:

  • num_features :一个样本特征数量(最重要
  • eps :分母修正项
  • momentum :指数加权平均估计当前 mean/ var
  • affine :是否需要 affine transform
  • track_running_stats :是训练状态,还是测试状态

Group Normalization

起因:小batch 样本中, BN 估计的值不准
思路:数据不够,通道来凑

注意事项:

不再有 running_mean 和 running_var

gamma 和 beta 为逐通道( channel )的
应用场景:大模型(小batch size )任务

小结

BN 、 LN 、 IN 和 GN 都是为了克服 Internal Covariate Shift (ICS)

Pytorch学习笔记-06 Normalization layers_第1张图片

你可能感兴趣的:(Pytorch学习,pytorch,深度学习,python)