【学习笔记】Pytorch深度学习—Normalization_layers

【学习笔记】Pytorch深度学习—Normalization_layers

    • 一、为什么要进行Normalization?
            • ***`Internal Covariate Shfit`***
    • 二、常见的Normalization方法——BN、LN、IN、GN
            • ***`1、适用变长网络的:Layer Normalization`***
            • ***`2、适用样本风格不统一的:Instance Normalization`***
            • ***`3、适用大模型、小 batch size的:Group Normalization`***
    • 三、Normalization小结

本节课的内容主要是深度学习中常见的Normalization方法,分别是BN、LN、IN、GN;主要分为3部分内容:(1)为什么要进行Normalization?(2)常见的Normalization方法——BN、LN、IN、GN;(3)Normalization方法小结。

一、为什么要进行Normalization?

Internal Covariate Shfit

ICS可以理解为,在深度学习中出现数据尺度分布异常,导致训练困难的现象。

在全连接网络中,第一个网络层 H 1 H_{1} H1层中的神经元 H 11 H_{11} H11, D ( H 1 ) = n × D ( X ) × D ( W ) D(H_1)=n\times D(X)\times D(W) D(H1)=n×D(X)×D(W),方差即网络层的数据尺度是连乘关系;如果尺度上稍有减小趋势,随着网络的加深,减小趋势会越来越明显,从而导致梯度消失;抑或是尺度上有增大趋势,随着网络的加深,从而导致梯度爆炸,造成模型难以训练。

而进行了Normalization后,可以控制、约束数据尺度、数据分布,有助于模型训练。
【学习笔记】Pytorch深度学习—Normalization_layers_第1张图片

二、常见的Normalization方法——BN、LN、IN、GN

1、Batch Normalization——BN
2、Layer Normalization——LN
3、Instance Normalization——IN
4、Group Normalization——GN

四种方法的异同点:
【学习笔记】Pytorch深度学习—Normalization_layers_第2张图片

1、适用变长网络的:Layer Normalization

【学习笔记】Pytorch深度学习—Normalization_layers_第3张图片
分析:gamma、beta逐元素、逐特征的,第1个神经元有自己的gamma系数和beta,第2个神经元也有自己的gamma和beta。

使用方法

nn.LayerNorm(
normalized_shape,
eps=1e-05,
elementwise_affine=True)

主要参数

normalized_shape:该层特征形状,根据该形状求取均值和方差;
eps:分母修正项
elementwise_affine:是否需要affine transform 
2、适用样本风格不统一的:Instance Normalization

【学习笔记】Pytorch深度学习—Normalization_layers_第4张图片
分析:instance为实例,可以理解为图像

使用方法

nn.InstanceNorm2d(
num_features,
eps=1e-05,
momentum=0.1,
affine=False,
track_running_stats=False)

分析:InstanceNorm亦有1d、2d、3d,主要看特征是几维的。
主要参数

num_features:一个样本特征数量(最重要)
eps:分母修正项
momentum:指数加权平均估计当前mean/var
affine:是否需要affine transform
track_running_stats:是训练状态还是测试状态
3、适用大模型、小 batch size的:Group Normalization

【学习笔记】Pytorch深度学习—Normalization_layers_第5张图片
使用方法

nn.GroupNorm(
num_groups,
num_channels,
eps=1e-05
affine=False)

主要参数

num_groups:分组数(通常设置为24816...根据特征图数量计算,
并且分组数设置的数值是必须能被整除的。比如1个样本的特征图为4,分组
若设置为34/3不能整除,则会报错。)
num_channels:通道数(特征数)假如有256个通道,想分为4组,每一组为
64个feature map,64个feature map一起估计均值和方差
momentum:指数加权平均估计当前mean/var
eps:分母修正项
affine:是否需要affine transform

三、Normalization小结

【学习笔记】Pytorch深度学习—Normalization_layers_第6张图片

你可能感兴趣的:(深度学习)