【发布时间】:2021-05-23 03:35:45
【问题描述】:
我正在尝试测试 PyTorch 的层归一化功能。
但我不知道为什么 b[0] 和 result 这里有不同的值
我是不是做错了什么?
import numpy as np
import torch
import torch.nn as nn
a = torch.randn(1, 5)
m = nn.LayerNorm(a.size()[1:], elementwise_affine= False)
b = m(a)
结果:
input: a[0] = tensor([-1.3549, 0.3857, 0.1110, -0.8456, 0.1486])
output: b[0] = tensor([-1.5561, 1.0386, 0.6291, -0.7967, 0.6851])
mean = torch.mean(a[0])
var = torch.var(a[0])
result = (a[0]-mean)/(torch.sqrt(var+1e-5))
结果:
result = tensor([-1.3918, 0.9289, 0.5627, -0.7126, 0.6128])
而且,对于n*2 normalization,pytorch layer norm的结果总是[1.0 , -1.0](或[-1.0, 1.0])。我不明白为什么。如果您有任何提示,请告诉我
a = torch.randn(1, 2)
m = nn.LayerNorm(a.size()[1:], elementwise_affine= False)
b = m(a)
结果:
b = tensor([-1.0000, 1.0000])
【问题讨论】:
标签: python pytorch normalization normalize