pytorch BatchNorm LayerNorm InstanceNorm GroupNorm 通俗易懂理解
认识批量数据
先来理解归一化层的输入数据的格式,输入格式包括4个符号:N、C、H、W
N:batch–我们通常将一个批量数据输入模型进行训练。
C:通道数,可以理解为特征的个数。
H*W:表示一个通道内数据的维度,这里是二维,若是NCABC,则数据维度是三维,依此类推,NCABCD…。
N:样本轴,代表一个批量(batchsize);
C:通道轴,代表特征个数;
F:每个通道中特征的维度,以输入格式为NCHW为例,F=H*W,所以每个通道中特征为二维,依此类推。
上图中,左图为LayerNorm,右图为BatchNorm,原因如下:
LayerNorm :同一样本在不同通道上做归一化。
BatchNorm:不同样本在同一特征上做归一化。
上图的另一种理解方法:
下图:横轴:N,样本轴;纵轴:C,通道轴;F:每个通道中特征的维度,一维。图中:N=3,C=5,F=1,此批量数据格式为(3,5,1);
F:每个通道中特征的维度,两维。图中:N=3,C=3,F=2*2,此批量数据格式为(3,3,2,2);
F:每个通道中特征的维度,三维。图中:N=3,C=3,F=3*2*2,此批量数据格式为(3,3,3,2,2);
四种归一化的异同点
相同点 | 异同点 |
---|---|
均是通过 x ^ i = x i − μ β σ β 2 + ϵ 、 y i = γ x ^ i + β \hat x_i = \frac{x_i - \mu_\beta}{\sqrt {\sigma^2_\beta+\epsilon}} 、y_i = \gamma \hat x_i + \beta x^i=σβ2+ϵxi−μβ |