Нормализация слоя в pytorch? - PullRequest
0 голосов
/ 20 января 2020

не должно ли нормализация слоя x = torch.tensor([[1.5,0,0,0,0]]) быть [[1.5,-0.5,-0.5,-0.5]]? согласно этой статье paper и уравнению из pytorch do c. Но torch.nn.LayerNorm дает [[ 1.7320, -0.5773, -0.5773, -0.5773]]

Вот пример кода:

x = torch.tensor([[1.5,.0,.0,.0]])
layerNorm = torch.nn.LayerNorm(4, elementwise_affine = False)

y1 = layerNorm(x)

mean = x.mean(-1, keepdim = True)
var = x.var(-1, keepdim = True)
y2 = (x-mean)/torch.sqrt(var+layerNorm.eps)

где:

y1 == tensor([[ 1.7320, -0.5773, -0.5773, -0.5773]])
y2 == tensor([[ 1.5000, -0.5000, -0.5000, -0.5000]])

1 Ответ

0 голосов
/ 20 января 2020

Так что, очевидно, код должен быть таким:

...
var = x.mean((x-mean)**2, -1, keepdim = True)
...

Надеюсь, это полезно для всех, кто сталкивается с этой же ошибкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...