BN和LN的区别

71 阅读1分钟

Batch Normalization:对一个batch中的每个特征【分别】做归一化

Layer Normalization:【分别】对每个样本中的所有特征做归一化

tensor([[1., 2., 3.],
        [4., 5., 6.],
        [7., 8., 9.]])
Batch Normalization Output:
tensor([[-1.2247, -1.2247, -1.2247],
        [ 0.0000,  0.0000,  0.0000],
        [ 1.2247,  1.2247,  1.2247]], grad_fn=<NativeBatchNormBackward>)
Layer Normalization Output:
tensor([[-1.2247,  0.0000,  1.2247],
        [-1.2247,  0.0000,  1.2247],
        [-1.2247,  0.0000,  1.2247]], grad_fn=<NativeLayerNormBackward>)

在应用场景上,BN常用于处理批次数据,适用于CNN;LN常用于处理序列数据,适用于RNN和Transformer