Spec-Zone.ru › PyTorch 1

LayerNorm

class torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True, device=None, dtype=None) [source]

Применяет нормализацию по слою к мини-батчу входных данных, как описано в статье Layer Normalization

y=x−E[x]Var[x]+ϵ∗γ+βy = \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] + \epsilon}} * \gamma + \beta

Среднее и стандартное отклонение вычисляются по последним D измерениям, где D — размерность normalized_shape. Например, если normalized_shape равно (3, 5) (двумерная форма), среднее и стандартное отклонение вычисляются по последним двум измерениям входных данных (то есть input.mean((-2, -1))). γ\gamma и β\beta — обучаемые параметры аффинного преобразования normalized_shape если elementwise_affine равно True. Стандартное отклонение рассчитывается с помощью смещённой оценки, что эквивалентно torch.var(input, unbiased=False).

Примечание

В отличие от Batch Normalization и Instance Normalization, которые применяют скалярную шкалу и смещение для каждого канала/плоскости целиком с опцией affine, Layer Normalization применяет шкалу и смещение к каждому элементу с опцией elementwise_affine.

Этот слой использует статистику, вычисленную из входных данных, как в режиме обучения, так и в режиме оценки.

Параметры:
  • normalized_shape (int или список или torch.Size) –

    форма входных данных от ожидаемого входа размером

    [∗×normalized_shape[0]×normalized_shape[1]×…×normalized_shape[−1]][* \times \text{normalized\_shape}[0] \times \text{normalized\_shape}[1] \times \ldots \times \text{normalized\_shape}[-1]]

    Если используется целое число, оно рассматривается как одиночный список, и этот модуль будет нормализовывать по последнему измерению, которое ожидается размера.

  • eps (float) – значение, добавляемое к знаменателю для повышения числовой устойчивости. По умолчанию: 1e-5
  • elementwise_affine (bool) – логическое значение, которое, если установлено в True, этот модуль имеет обучаемые параметры аффинного преобразования для каждого элемента, инициализированные единицами (для весов) и нулями (для смещений). По умолчанию: True.
Переменные:
  • weight – обучаемые веса модуля формы normalized_shape\text{normalized\_shape}, когда elementwise_affine установлено в True. Значения инициализируются единицами.
  • bias – обучаемое смещение модуля формы normalized_shape\text{normalized\_shape}, когда elementwise_affine установлено в True. Значения инициализируются нулями.
Форма:
  • Вход: (N,∗)(N, *)
  • Выход: (N,∗)(N, *) (такая же форма, как у входа)

Примеры:

>>> # NLP Example
>>> batch, sentence_length, embedding_dim = 20, 5, 10
>>> embedding = torch.randn(batch, sentence_length, embedding_dim)
>>> layer_norm = nn.LayerNorm(embedding_dim)
>>> # Activate module
>>> layer_norm(embedding)
>>>
>>> # Image Example
>>> N, C, H, W = 20, 5, 10, 10
>>> input = torch.randn(N, C, H, W)
>>> # Normalize over the last three dimensions (i.e. the channel and spatial dimensions)
>>> # as shown in the image below
>>> layer_norm = nn.LayerNorm([C, H, W])
>>> output = layer_norm(input)
../_images/layer_norm.jpg

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.nn.LayerNorm.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API