本文介绍深度学习中常用的四种Normalization方法,Batch Normalization、Layer Normalization、Instance Normalization和Group Normalization。主要结合 代码分析 其计算过程
对于输入大小为NxCxHxW的特征

BN对NHW进行归一化,保留C维度,对较小的batch_size效果不好
def BatchNormalization(x):
# x: [NxCxHxW]
mean, std = mean_std(x, dim=[0,2,3], keepdim=True)
x = (x - mean) / std
return x
# track_running_stats=False,求当前 batch 真实平均值和标准差,而不是更新全局平均值和标准差
# affine=False, 只做归一化,不乘以 gamma 加 beta(通过训练才能确定)
# num_features 为 feature map 的 channel 数目
bn = nn.BatchNorm2d(num_features=20, affine=False, track_running_stats=False)
LN对CHW进行归一化,保留N维度
def LayerNormalization(x):
# x: [NxCxHxW]
mean, std = mean_std(x, dim=[1,2,3], keepdim=True)
x = (x - mean) / std
return x
# elementwise_affine=Fal
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删