Spec-Zone.ru › PyTorch 2

BatchNorm2d

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

Применяет батч-нормализацию к 4D входу (минимальной партии 2D входов с дополнительным канальным измерением), как описано в статье Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift .

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, unbiased=False). Однако значение, хранящееся в скользящем среднем стандартного отклонения, вычисляется с использованием несмещённой оценки, эквивалентной torch.var(input, unbiased=True).

Также по умолчанию в процессе обучения этот слой сохраняет текущие оценки вычисленного среднего и дисперсии, которые затем используются для нормализации при оценке. Текущие оценки хранятся с заданным по умолчанию 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) – значение, используемое для вычисления running_mean и running_var. Может быть установлено в None для кумулятивного скользящего среднего (т.е. простого среднего). По умолчанию: 0.1
  • affine (bool) – логическое значение, которое, при установке в True, придает этому модулю настраиваемые аффинные параметры. По умолчанию: True
  • track_running_stats (bool) – логическое значение, которое, при установке в True, этот модуль отслеживает текущее среднее и дисперсию, а при установке в False, этот модуль не отслеживает такие статистики и инициализирует буферы статистики running_mean и running_var как None. Когда эти буферы None, этот модуль всегда использует статистику партии в режимах обучения и оценки. По умолчанию: 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)

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

Spec-Zone.ru

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