Spec-Zone.ru › PyTorch 2.14

LayerNorm

class torch.nn.modules.normalization.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True, bias=True, device=None, dtype=None) [исходный код]

Применяет нормализацию слоя к мини-пакету входных данных.

Этот слой реализует операцию, описанную в статье 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) (двумерная форма), среднее значение и стандартное отклонение вычисляются по последним 2 измерениям входных данных (т. е. input.mean((-2, -1))). γ\gamma и β\beta — обучаемые параметры аффинного преобразования для normalized_shape, если elementwise_affine — это True. Дисперсия вычисляется с помощью смещённой оценки, эквивалентной torch.var(input, correction=0).

Примечание

В отличие от пакетной нормализации и нормализации экземпляров, которые применяют скалярные масштабирование и смещение ко всему каналу/плоскости при параметре affine, нормализация слоя применяет масштабирование и смещение к каждому элементу при параметре elementwise_affine.

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

Параметры:
  • normalized_shape (int или list или 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
  • bias (bool) – Если задано False, слой не будет обучать аддитивное смещение (имеет значение, только если elementwise_affine — 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

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

Spec-Zone.ru

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