Spec-Zone.ru › PyTorch 2

InstanceNorm3d

class torch.nn.InstanceNorm3d(num_features, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False, device=None, dtype=None) [source]

Применяет нормализацию по экземпляру к 5-мерному входу (микро-пакет 3-мерных входов с дополнительным канальным измерением), как описано в статье Instance Normalization: The Missing Ingredient for Fast Stylization.

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, unbiased=False).

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

Если 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 — новое наблюдаемое значение.

Примечание

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

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

Примеры:

>>> # Without Learnable Parameters
>>> m = nn.InstanceNorm3d(100)
>>> # With Learnable Parameters
>>> m = nn.InstanceNorm3d(100, affine=True)
>>> input = torch.randn(20, 100, 35, 45, 10)
>>> output = m(input)

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

Spec-Zone.ru

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