BatchNorm1d
-
class torch.nn.modules.batchnorm.BatchNorm1d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None, *, bias=True)[source] -
Применяет пакетную нормализацию к входным данным размерности 2D или 3D.
Метод описан в статье Пакетная нормализация: ускорение обучения глубоких сетей за счёт уменьшения внутреннего ковариатного сдвига .
Среднее значение и стандартное отклонение вычисляются для каждой размерности по мини-пакетам, а и — обучаемые векторы параметров размера
C(гдеC— количество признаков или каналов входных данных). По умолчанию элементы равны 1, а элементы равны 0. Во время прямого прохода при обучении дисперсия вычисляется с помощью смещённой оценки, эквивалентнойtorch.var(input, correction=0). Однако значение, сохраняемое в скользящем среднем дисперсии, вычисляется с помощью несмещённой оценки, эквивалентнойtorch.var(input, correction=1).Кроме того, по умолчанию во время обучения этот слой сохраняет текущие оценки вычисленных среднего значения и дисперсии, которые затем используются для нормализации при оценке. Текущие оценки сохраняются с параметром
momentum, равным по умолчанию 0.1.Если для
track_running_statsзадано значениеFalse, этот слой не сохраняет текущие оценки, и при оценке вместо них используются статистики пакета.Примечание
Этот аргумент
momentumотличается от аргумента, используемого в классах оптимизаторов, и от общепринятого понятия момента. Математически правило обновления текущих статистик здесь имеет вид , где — оценённая статистика, а — новое наблюдаемое значение.Поскольку пакетная нормализация выполняется по размерности
C, вычисляя статистики для срезов(N, L), принято называть её временной пакетной нормализацией.- Параметры:
-
- num_features (int) – количество признаков или каналов входных данных
- 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
- Форма:
-
- Входные данные: или , где — размер пакета, — количество признаков или каналов, а — длина последовательности
- Выходные данные: или (та же форма, что и у входных данных)
Примеры:
>>> # With Learnable Parameters >>> m = nn.BatchNorm1d(100) >>> # Without Learnable Parameters >>> m = nn.BatchNorm1d(100, affine=False) >>> input = torch.randn(20, 100) >>> 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.batchnorm.BatchNorm1d.html