normalization方法

各种normalization讲解
在各种网络中的应用

layer norm

参数

torch.nn.LayerNorm(
        normalized_shape: Union[int, List[int], torch.Size],
        eps: float = 1e-05,
        elementwise_affine: bool = True)

torch
代码
csdn讲解

shape为整数

如果传入整数,比如2,则被看做只有一个整数的list,此时LayerNorm会对输入的最后一维进行归一化,这个int值需要和输入的最后一维一样大。

ln = nn.LayerNorm(2)
bn = nn.BatchNorm1d(2)
X = torch.tensor([[1, 2], [2, 3]], dtype=torch.float32)
print('layer norm:', ln(X), '\nbatch norm:', bn(X))

layer norm: tensor([[-1.0000, 1.0000],
[-1.0000, 1.0000]], grad_fn=)
batch norm: tensor([[-1.0000, -1.0000],
[ 1.0000, 1.0000]], grad_fn=)

shape为元组

若形状为元组,则要对该元组(3,4)对应的后几维,求layer_norm。
【相当于把(3,4)整个flatten成一维向量,再求简单情况下的layernorm】

显然,与手算出的结果相等:

同时也等价于对内层的几维flatten之后,简单情况求layer_norm

batch norm

youtu讲解

posted @ 2021-11-13 13:38  zae  阅读(87)  评论(0编辑  收藏  举报