Spec-Zone.ru › PyTorch 2

LayerNorm

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

Применяет слой Layer Normalization к мини-пакету входных данных, как описано в статье 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, 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.
  • 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

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

Spec-Zone.ru

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