BatchNorm和LayerNorm 简单解释

对于一维的数据,使用BatchNorm1d和LayerNorm,简单的理解,BatchNorm是对所有样本的每一个维度取均值,均方差进行计算。LayerNorm是对每一个样本的所有维度取均值,均方差进行计算。

import torch
import torch.nn as nn

if __name__ == '__main__':

    input = torch.tensor([[6,6,6,6],
                          [6,6,8,4],
                          [6,8,2.,6]])
    norm1 = nn.BatchNorm1d(input.shape[1])
    norm2 = nn.LayerNorm(input.shape[1])
    print(norm1(input))
    print(norm2(input))

结果如下:

tensor([[ 0.0000, -0.7071,  0.2673,  0.7071],
        [ 0.0000, -0.7071,  1.0690, -1.4142],
        [ 0.0000,  1.4142, -1.3363,  0.7071]],
       grad_fn=)
tensor([[ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00],
        [-1.1921e-07, -1.1921e-07,  1.4142e+00, -1.4142e+00],
        [ 2.2942e-01,  1.1471e+00, -1.6059e+00,  2.2942e-01]],
       grad_fn=)

你可能感兴趣的:(机器学习,深度学习,概率论)