Spec-Zone.ru › PyTorch 2.14

torch.nn.init

Создано: 11 июня 2019 г. | Последнее обновление: 12 мая 2026 г.

Предупреждение

Все функции этого модуля предназначены для инициализации параметров нейронной сети, поэтому они выполняются в режиме torch.no_grad() и не учитываются autograd.

torch.nn.init.calculate_gain(nonlinearity, param=None) [исходный код]

Возвращает рекомендуемое значение коэффициента усиления для указанной функции нелинейности.

Значения приведены ниже:

функция нелинейности

коэффициент усиления

Линейная / тождественная

11

Conv{1,2,3}D

11

Sigmoid

11

Tanh

53\frac{5}{3}

ReLU

2\sqrt{2}

Leaky ReLU

21+negative_slope2\sqrt{\frac{2}{1 + \text{negative\_slope}^2}}

SELU

34\frac{3}{4}

Предупреждение

Для реализации нейронных сетей с самонормализацией следует использовать nonlinearity='linear' вместо nonlinearity='selu'. Это задаёт начальную дисперсию весов, равную 1 / N, что необходимо для возникновения устойчивой неподвижной точки при прямом проходе. В отличие от этого, значение коэффициента усиления по умолчанию для SELU жертвует эффектом нормализации ради более стабильного потока градиента в прямоугольных слоях.

Параметры:
  • nonlinearity (Literal['linear', 'conv1d', 'conv2d', 'conv3d', 'conv_transpose1d', 'conv_transpose2d', 'conv_transpose3d', 'sigmoid', 'tanh', 'relu', 'leaky_relu', 'selu']) – функция нелинейности (имя nn.functional)
  • param (int | float | None) – необязательный параметр функции нелинейности
Тип возвращаемого значения:

float

Примеры

>>> gain = nn.init.calculate_gain(
...     "leaky_relu", 0.2
... )  # leaky_relu with negative_slope=0.2
torch.nn.init.uniform_(tensor, a=0.0, b=1.0, generator=None) [исходный код]

Заполняет входной тензор значениями, выбранными из равномерного распределения.

U(a,b)\mathcal{U}(a, b).

Параметры:
  • tensor (Tensor) – n-мерный torch.Tensor
  • a (float) – нижняя граница равномерного распределения
  • b (float) – верхняя граница равномерного распределения
  • generator (Generator | None) – генератор Torch для выборки (по умолчанию: None)
Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.uniform_(w)
torch.nn.init.normal_(tensor, mean=0.0, std=1.0, generator=None) [исходный код]

Заполняет входной тензор значениями, выбранными из нормального распределения.

N(mean,std2)\mathcal{N}(\text{mean}, \text{std}^2).

Параметры:
  • tensor (Tensor) – n-мерный torch.Tensor
  • mean (float) – среднее нормального распределения
  • std (float) – стандартное отклонение нормального распределения
  • generator (Generator | None) – генератор Torch для выборки (по умолчанию: None)
Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.normal_(w)
torch.nn.init.constant_(tensor, val) [исходный код]

Заполняет входной тензор значением val\text{val}.

Параметры:
  • tensor (Tensor) – n-мерный torch.Tensor
  • val (float) – значение, которым заполняется тензор
Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.constant_(w, 0.3)
torch.nn.init.ones_(tensor) [исходный код]

Заполняет входной тензор скалярным значением 1.

Параметры:

tensor (Tensor) – n-мерный torch.Tensor

Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.ones_(w)
torch.nn.init.zeros_(tensor) [исходный код]

Заполняет входной тензор скалярным значением 0.

Параметры:

tensor (Tensor) – n-мерный torch.Tensor

Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.zeros_(w)
torch.nn.init.eye_(tensor) [исходный код]

Заполняет двумерный входной Tensor единичной матрицей.

Сохраняет тождественное отображение входных данных в слоях Linear, сохраняя максимально возможное число входных данных.

Параметры:

tensor (Tensor) – двумерный torch.Tensor

Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.eye_(w)
torch.nn.init.dirac_(tensor, groups=1) [исходный код]

Заполняет входной Tensor размерности {3, 4, 5} дельта-функцией Дирака.

Сохраняет тождественное отображение входных данных в слоях Convolutional, сохраняя максимально возможное число входных каналов. Если groups>1, каждая группа каналов сохраняет тождественное отображение

Параметры:
  • tensor (Tensor) – torch.Tensor размерности {3, 4, 5}
  • groups (int, optional) – число групп в сверточном слое (по умолчанию: 1)
Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 16, 5, 5)
>>> nn.init.dirac_(w)
>>> w = torch.empty(3, 24, 5, 5)
>>> nn.init.dirac_(w, 3)
torch.nn.init.xavier_uniform_(tensor, gain=1.0, generator=None) [исходный код]

Заполняет входной Tensor значениями, используя равномерное распределение Xavier.

Метод описан в Understanding the difficulty of training deep feedforward neural networks — Glorot, X. и Bengio, Y. (2010). Полученный тензор будет содержать значения, выбранные из U(−a,a)\mathcal{U}(-a, a), где

a=gain×6fan_in+fan_outa = \text{gain} \times \sqrt{\frac{6}{\text{fan\_in} + \text{fan\_out}}}

Также известна как инициализация Glorot.

Параметры:
  • tensor (Tensor) – n-мерный torch.Tensor
  • gain (float) – необязательный коэффициент масштабирования
  • generator (Generator | None) – генератор Torch для выборки (по умолчанию: None)
Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.xavier_uniform_(w, gain=nn.init.calculate_gain("relu"))
torch.nn.init.xavier_normal_(tensor, gain=1.0, generator=None) [исходный код]

Заполняет входной Tensor значениями, используя нормальное распределение Xavier.

Метод описан в Understanding the difficulty of training deep feedforward neural networks — Glorot, X. и Bengio, Y. (2010). Полученный тензор будет содержать значения, выбранные из N(0,std2)\mathcal{N}(0, \text{std}^2), где

std=gain×2fan_in+fan_out\text{std} = \text{gain} \times \sqrt{\frac{2}{\text{fan\_in} + \text{fan\_out}}}

Также известна как инициализация Glorot.

Параметры:
  • tensor (Tensor) – n-мерный torch.Tensor
  • gain (float) – необязательный коэффициент масштабирования
  • generator (Generator | None) – генератор Torch для выборки (по умолчанию: None)
Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.xavier_normal_(w)
torch.nn.init.kaiming_uniform_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu', generator=None) [исходный код]

Заполняет входной Tensor значениями, используя равномерное распределение Kaiming.

Метод описан в Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification — He, K. и др. (2015). Полученный тензор будет содержать значения, выбранные из U(−bound,bound)\mathcal{U}(-\text{bound}, \text{bound}), где

bound=gain×3fan_mode\text{bound} = \text{gain} \times \sqrt{\frac{3}{\text{fan\_mode}}}

Также известна как инициализация He.

Параметры:
  • tensor (Tensor) – n-мерный torch.Tensor
  • a (float) – отрицательный наклон функции выпрямителя, используемой после этого слоя (используется только с 'leaky_relu')
  • mode (Literal['fan_in', 'fan_out']) – либо 'fan_in' (по умолчанию), либо 'fan_out'. Выбор 'fan_in' сохраняет величину дисперсии весов при прямом проходе. Выбор 'fan_out' сохраняет величину при обратном проходе.
  • nonlinearity (Literal['linear', 'conv1d', 'conv2d', 'conv3d', 'conv_transpose1d', 'conv_transpose2d', 'conv_transpose3d', 'sigmoid', 'tanh', 'relu', 'leaky_relu', 'selu']) – функция нелинейности (имя nn.functional); рекомендуется использовать только с 'relu' или 'leaky_relu' (по умолчанию).
  • generator (Generator | None) – генератор Torch для выборки (по умолчанию: None)
Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.kaiming_uniform_(w, mode="fan_in", nonlinearity="relu")

Примечание

Обратите внимание, что fan_in и fan_out вычисляются в предположении, что матрица весов используется в транспонированном виде (то есть x @ w.T в слоях Linear, где w.shape = [fan_out, fan_in]). Это важно для правильной инициализации. Если вы планируете использовать x @ w, где w.shape = [fan_in, fan_out], передайте транспонированную матрицу весов, то есть nn.init.kaiming_uniform_(w.T, ...).

torch.nn.init.kaiming_normal_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu', generator=None) [исходный код]

Заполняет входной Tensor значениями, используя нормальное распределение Kaiming.

Метод описан в Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification — He, K. и др. (2015). Полученный тензор будет содержать значения, выбранные из N(0,std2)\mathcal{N}(0, \text{std}^2), где

std=gainfan_mode\text{std} = \frac{\text{gain}}{\sqrt{\text{fan\_mode}}}

Также известна как инициализация He.

Параметры:
  • tensor (Tensor) – n-мерный torch.Tensor
  • a (float) – отрицательный наклон функции выпрямителя, используемой после этого слоя (используется только с 'leaky_relu')
  • mode (Literal['fan_in', 'fan_out']) – либо 'fan_in' (по умолчанию), либо 'fan_out'. Выбор 'fan_in' сохраняет величину дисперсии весов при прямом проходе. Выбор 'fan_out' сохраняет величину при обратном проходе.
  • nonlinearity (Literal['linear', 'conv1d', 'conv2d', 'conv3d', 'conv_transpose1d', 'conv_transpose2d', 'conv_transpose3d', 'sigmoid', 'tanh', 'relu', 'leaky_relu', 'selu']) – функция нелинейности (имя nn.functional); рекомендуется использовать только с 'relu' или 'leaky_relu' (по умолчанию).
  • generator (Generator | None) – генератор Torch для выборки (по умолчанию: None)
Тип возвращаемого значения:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.kaiming_normal_(w, mode="fan_out", nonlinearity="relu")

Примечание

Обратите внимание, что fan_in и fan_out вычисляются в предположении, что матрица весов используется в транспонированном виде (то есть x @ w.T в слоях Linear, где w.shape = [fan_out, fan_in]). Это важно для правильной инициализации. Если вы планируете использовать x @ w, где w.shape = [fan_in, fan_out], передайте транспонированную матрицу весов, то есть nn.init.kaiming_normal_(w.T, ...).

torch.nn.init.trunc_normal_(tensor, mean=0.0, std=1.0, a=-2.0, b=2.0, generator=None) [source]

Заполняет входной тензор значениями, выбранными из усечённого нормального распределения.

Фактически значения выбираются из нормального распределения N(mean,std2)\mathcal{N}(\text{mean}, \text{std}^2), а значения вне диапазона [a,b][a, b] выбираются повторно, пока не окажутся в его пределах. Метод генерации случайных значений работает лучше всего, когда a≤mean≤ba \leq \text{mean} \leq b.

Для типов с пониженной точностью (torch.float16 и torch.bfloat16) качество выборки зависит от базовых реализаций normal_() и uniform_(), которые работают с более высокой внутренней точностью, чтобы избежать артефактов квантования.

Параметры:
  • tensor (Тензор) – n-мерный torch.Tensor
  • mean (float) – среднее нормального распределения
  • std (float) – стандартное отклонение нормального распределения
  • a (float) – минимальное пороговое значение
  • b (float) – максимальное пороговое значение
  • generator (Generator | None) – генератор torch для выборки (по умолчанию: None)
Тип возвращаемого значения:

Тензор

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.trunc_normal_(w)
torch.nn.init.orthogonal_(tensor, gain=1, generator=None) [source]

Заполняет входной Tensor (полу)ортогональной матрицей.

Описано в Exact solutions to the nonlinear dynamics of learning in deep linear neural networks — Saxe, A. et al. (2013). Входной тензор должен иметь не менее двух измерений; если измерений больше двух, конечные измерения объединяются.

Параметры:
  • tensor (Тензор) – n-мерный torch.Tensor, где n≥2n \geq 2
  • gain (float) – необязательный коэффициент масштабирования
  • generator (Generator | None) – генератор torch для выборки (по умолчанию: None)
Тип возвращаемого значения:

Тензор

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.orthogonal_(w)
torch.nn.init.sparse_(tensor, sparsity, std=0.01, generator=None) [source]

Заполняет двумерный входной Tensor как разреженную матрицу.

Ненулевые элементы выбираются из нормального распределения N(0,0.01)\mathcal{N}(0, 0.01), как описано в Deep learning via Hessian-free optimization — Martens, J. (2010).

Параметры:
  • tensor (Тензор) – n-мерный torch.Tensor
  • sparsity (float) – доля элементов в каждом столбце, которые будут обнулены
  • std (float) – стандартное отклонение нормального распределения, используемого для генерации ненулевых значений
  • generator (Generator | None) – генератор torch для выборки (по умолчанию: None)
Тип возвращаемого значения:

Тензор

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.sparse_(w, sparsity=0.1)

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/nn.init.html

Spec-Zone.ru

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