Spec-Zone.ru › PyTorch 2.14

InstanceNorm1d

class torch.nn.modules.instancenorm.InstanceNorm1d(num_features, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False, device=None, dtype=None, *, bias=True) [исходный код]

Применяет нормализацию экземпляра.

Эта операция применяет нормализацию экземпляра к двумерному (без пакетного измерения) или трёхмерному (с пакетным измерением) входу, как описано в статье Нормализация экземпляров: недостающий компонент для быстрой стилизации.

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

Среднее значение и стандартное отклонение вычисляются отдельно для каждого измерения каждого объекта в мини-пакете. γ\gamma и β\beta — обучаемые векторы параметров размера C (где C — количество признаков или каналов входных данных), если affine равно True. Дисперсия вычисляется с помощью смещённой оценки, эквивалентной torch.var(input, correction=0).

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

Если для track_running_stats задано значение True, во время обучения этот слой сохраняет скользящие оценки вычисленных среднего значения и дисперсии, которые затем используются для нормализации при оценке. Скользящие оценки сохраняются с коэффициентом momentum, равным по умолчанию 0.1.

Примечание

Этот аргумент momentum отличается от аргумента, используемого в классах оптимизаторов, и от общепринятого понятия импульса. Математически правило обновления скользящих статистик здесь имеет вид x^new=(1−momentum)×x^+momentum×xt\hat{x}_\text{new} = (1 - \text{momentum}) \times \hat{x} + \text{momentum} \times x_t, где x^\hat{x} — оценённая статистика, а xtx_t — новое наблюдаемое значение.

Примечание

InstanceNorm1d и LayerNorm очень похожи, но имеют некоторые тонкие различия. InstanceNorm1d применяется к каждому каналу многоканальных данных, например многомерных временных рядов, тогда как LayerNorm обычно применяется ко всему образцу и часто используется в задачах обработки естественного языка. Кроме того, LayerNorm применяет поэлементное аффинное преобразование, тогда как InstanceNorm1d обычно не применяет аффинное преобразование.

Параметры:
  • num_features (int) – количество признаков или каналов CC входных данных
  • eps (float) – значение, добавляемое к знаменателю для численной устойчивости. По умолчанию: 1e-5
  • momentum (float | None) – значение, используемое при вычислении running_mean и running_var. По умолчанию: 0.1
  • affine (bool) – логическое значение: если оно равно True, у этого модуля есть обучаемые аффинные параметры, инициализированные так же, как при пакетной нормализации. По умолчанию: False
  • track_running_stats (bool) – логическое значение: если оно равно True, модуль отслеживает скользящие среднее значение и дисперсию; если оно равно False, модуль не отслеживает эти статистики и всегда использует статистики пакета как в режиме обучения, так и в режиме оценки. По умолчанию: False
  • bias (bool) – если задано значение False, слой не будет обучать аддитивное смещение (имеет значение только если affine равно True). По умолчанию: True
Форма:
  • Вход: (N,C,L)(N, C, L) или (C,L)(C, L)
  • Выход: (N,C,L)(N, C, L) или (C,L)(C, L) (та же форма, что и у входных данных)

Примеры:

>>> # Without Learnable Parameters
>>> m = nn.InstanceNorm1d(100)
>>> # With Learnable Parameters
>>> m = nn.InstanceNorm1d(100, affine=True)
>>> input = torch.randn(20, 100, 40)
>>> output = m(input)

© 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.instancenorm.InstanceNorm1d.html

Spec-Zone.ru

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