Spec-Zone.ru › PyTorch 2.14

BatchNorm2d

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

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

4D-вход представляет собой мини-пакет 2D-входов с дополнительным измерением каналов. Метод описан в статье Пакетная нормализация: ускорение обучения глубоких сетей за счёт уменьшения внутреннего ковариативного сдвига .

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

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

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

Если track_running_stats установлено в False, этот слой не сохраняет скользящие оценки, а во время оценки вместо них используются статистики пакета.

Примечание

Аргумент 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 — новое наблюдаемое значение.

Поскольку пакетная нормализация выполняется по измерению C с вычислением статистик по (N, H, W) срезам, для неё принято название «пространственная пакетная нормализация».

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

Примеры:

>>> # With Learnable Parameters
>>> m = nn.BatchNorm2d(100)
>>> # Without Learnable Parameters
>>> m = nn.BatchNorm2d(100, affine=False)
>>> input = torch.randn(20, 100, 35, 45)
>>> 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.BatchNorm2d.html

Spec-Zone.ru

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