РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
319 of 769 menu

Класс LayerNorm

Класс LayerNorm применяет нормализацию признаков к последней размерности тензора. В отличие от пакетной нормализации, которая нормализует по батчу, слой нормализует каждый отдельный пример независимо от других, используя среднее и дисперсию по признаковому измерению. Первым параметром передаётся размерность признаков или список размерностей, по которым производится нормализация. Вторым параметром можно задать параметр eps для численной стабильности. Третьим параметром передаются параметры elementwise_affine (по умолчанию True), который отвечает за наличие обучаемых коэффициентов сдвига и масштаба.

Синтаксис

torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True, dtype=None)

Параметры

Обязательные параметры:

  • normalized_shape (int или tuple/list) - размерность признаков для нормализации. Может быть как числом для одномерных данных, так и списком размерностей.

Необязательные параметры:

  • eps (float) - константа для численной стабильности (по умолчанию 1e-5).
  • elementwise_affine (bool) - флаг, включающий обучаемые параметры смещения и масштаба (по умолчанию True).
  • dtype (torch.dtype) - тип данных для тензоров весов и смещений.

Пример

Создадим слой нормализации для одномерных признаков и применим его к тензору:

import torch layer_norm = torch.nn.LayerNorm(normalized_shape=5) t = torch.tensor([1., 2., 3., 4., 5.]) res = layer_norm(t) print(res)

Результат выполнения кода:

tensor([-1.4142, -0.7071, 0.0000, 0.7071, 1.4142], grad_fn=<NativeLayerNormBackward0>)

Пример

Применим слой к двумерному тензору, нормализуя признаковое пространство:

import torch layer_norm = torch.nn.LayerNorm(normalized_shape=3) t = torch.tensor([ [1., 2., 3.], [4., 5., 6.], ]) res = layer_norm(t) print(res)

Результат выполнения кода:

tensor([ [-1.2247, 0.0000, 1.2247], [-1.2247, 0.0000, 1.2247], ], grad_fn=<NativeLayerNormBackward0>)

Пример

Создадим слой без обучаемых параметров и сравним результат:

import torch layer_norm = torch.nn.LayerNorm( normalized_shape=5, elementwise_affine=False ) t = torch.tensor([1., 2., 3., 4., 5.]) res = layer_norm(t) print(res)

Результат выполнения кода:

tensor([-1.4142, -0.7071, 0.0000, 0.7071, 1.4142])

Пример

Используем слой в нейронной сети на примере обработки последовательности:

import torch t = torch.randn(2, 3, 4) layer_norm = torch.nn.LayerNorm(normalized_shape=4) res = layer_norm(t) print(res.shape)

Результат выполнения кода:

torch.Size([2, 3, 4])

Смотрите также

  • класс BatchNorm1d,
    который применяет пакетную нормализацию к одномерным данным
  • класс GroupNorm,
    который разделяет каналы на группы для нормализации
  • класс InstanceNorm1d,
    который нормализует каждый канал независимо для одномерных данных
  • класс RMSNorm,
    который использует среднеквадратичную нормализацию без центрирования
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить