torch.nn.init
Создано: 11 июня 2019 г. | Последнее обновление: 12 мая 2026 г.
Предупреждение
Все функции этого модуля предназначены для инициализации параметров нейронной сети, поэтому они выполняются в режиме torch.no_grad() и не учитываются autograd.
-
torch.nn.init.calculate_gain(nonlinearity, param=None)[исходный код] -
Возвращает рекомендуемое значение коэффициента усиления для указанной функции нелинейности.
Значения приведены ниже:
функция нелинейности
коэффициент усиления
Линейная / тождественная
Conv{1,2,3}D
Sigmoid
Tanh
ReLU
Leaky ReLU
SELU
Предупреждение
Для реализации нейронных сетей с самонормализацией следует использовать
nonlinearity='linear'вместоnonlinearity='selu'. Это задаёт начальную дисперсию весов, равную1 / N, что необходимо для возникновения устойчивой неподвижной точки при прямом проходе. В отличие от этого, значение коэффициента усиления по умолчанию дляSELUжертвует эффектом нормализации ради более стабильного потока градиента в прямоугольных слоях.- Параметры:
- Тип возвращаемого значения:
Примеры
>>> 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)[исходный код] -
Заполняет входной тензор значениями, выбранными из равномерного распределения.
.
- Параметры:
- Тип возвращаемого значения:
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.uniform_(w)
-
torch.nn.init.normal_(tensor, mean=0.0, std=1.0, generator=None)[исходный код] -
Заполняет входной тензор значениями, выбранными из нормального распределения.
.
- Параметры:
- Тип возвращаемого значения:
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.normal_(w)
-
torch.nn.init.constant_(tensor, val)[исходный код] -
Заполняет входной тензор значением .
- Параметры:
- Тип возвращаемого значения:
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.constant_(w, 0.3)
-
torch.nn.init.ones_(tensor)[исходный код] -
Заполняет входной тензор скалярным значением
1.Примеры
>>> w = torch.empty(3, 5) >>> nn.init.ones_(w)
-
torch.nn.init.zeros_(tensor)[исходный код] -
Заполняет входной тензор скалярным значением
0.Примеры
>>> w = torch.empty(3, 5) >>> nn.init.zeros_(w)
-
torch.nn.init.eye_(tensor)[исходный код] -
Заполняет двумерный входной
Tensorединичной матрицей.Сохраняет тождественное отображение входных данных в слоях
Linear, сохраняя максимально возможное число входных данных.Примеры
>>> w = torch.empty(3, 5) >>> nn.init.eye_(w)
-
torch.nn.init.dirac_(tensor, groups=1)[исходный код] -
Заполняет входной
Tensorразмерности {3, 4, 5} дельта-функцией Дирака.Сохраняет тождественное отображение входных данных в слоях
Convolutional, сохраняя максимально возможное число входных каналов. Если groups>1, каждая группа каналов сохраняет тождественное отображение- Параметры:
- Тип возвращаемого значения:
Примеры
>>> 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). Полученный тензор будет содержать значения, выбранные из , гдеТакже известна как инициализация Glorot.
- Параметры:
- Тип возвращаемого значения:
Примеры
>>> 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). Полученный тензор будет содержать значения, выбранные из , гдеТакже известна как инициализация Glorot.
- Параметры:
- Тип возвращаемого значения:
Примеры
>>> 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). Полученный тензор будет содержать значения, выбранные из , гдеТакже известна как инициализация 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 (Tensor) – n-мерный
- Тип возвращаемого значения:
Примеры
>>> 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). Полученный тензор будет содержать значения, выбранные из , гдеТакже известна как инициализация 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 (Tensor) – n-мерный
- Тип возвращаемого значения:
Примеры
>>> 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] -
Заполняет входной тензор значениями, выбранными из усечённого нормального распределения.
Фактически значения выбираются из нормального распределения , а значения вне диапазона выбираются повторно, пока не окажутся в его пределах. Метод генерации случайных значений работает лучше всего, когда .
Для типов с пониженной точностью (
torch.float16иtorch.bfloat16) качество выборки зависит от базовых реализацийnormal_()иuniform_(), которые работают с более высокой внутренней точностью, чтобы избежать артефактов квантования.- Параметры:
-
-
tensor (Тензор) – n-мерный
torch.Tensor - mean (float) – среднее нормального распределения
- std (float) – стандартное отклонение нормального распределения
- a (float) – минимальное пороговое значение
- b (float) – максимальное пороговое значение
- generator (Generator | None) – генератор torch для выборки (по умолчанию: None)
-
tensor (Тензор) – n-мерный
- Тип возвращаемого значения:
Примеры
>>> 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). Входной тензор должен иметь не менее двух измерений; если измерений больше двух, конечные измерения объединяются.- Параметры:
- Тип возвращаемого значения:
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.orthogonal_(w)
-
torch.nn.init.sparse_(tensor, sparsity, std=0.01, generator=None)[source] -
Заполняет двумерный входной
Tensorкак разреженную матрицу.Ненулевые элементы выбираются из нормального распределения , как описано в
Deep learning via Hessian-free optimization— Martens, J. (2010).- Параметры:
-
-
tensor (Тензор) – n-мерный
torch.Tensor - sparsity (float) – доля элементов в каждом столбце, которые будут обнулены
- std (float) – стандартное отклонение нормального распределения, используемого для генерации ненулевых значений
- generator (Generator | None) – генератор torch для выборки (по умолчанию: None)
-
tensor (Тензор) – n-мерный
- Тип возвращаемого значения:
Примеры
>>> 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