一.概念
Batch Normalization(批标准化)
对一个batch内的所有样本的同一通道的元素进行标准化
Layer Normalization(批标准化)
对一个样本内所有通道的元素进行标准化
Instance Normalization(实例标准化)
对一个样本内对每个通道的元素分别进行标准化
Group Normalization(组标准化)
对一个样本内对几个通道的元素分别进行标准化
二.Pytorch实现
nn.BatchNorm2d(num_features)
公式如下,其中mean(x)和Var(x)根据每个batch的数据进行更新,gamma和beta为可学习参数
即经过学习后的bn层,将数据映射到均值为beta,方差为gamma^2的正太分布。
BN的参数量为2*num_features,即每一个通道有两个仿射参数。
BN在训练时使用动量更新mean(x)和Var(x),测试时使用所有训练数据的均值和方差。
nn.LayerNorm(normalized_shape)
公式相同,对数据最后的normalized_shape维度进行标准化,对于每一个维度都单独训练一个gamma和beta,这与bn是不一样的,即最后的每一个normalized_shape维度的均值和方差都不同。
LN的参数量为2*normalized_shape,也是每一个通道有两个仿射参数。