torch.nn.init
Предупреждение
Все функции в этом модуле предназначены для инициализации параметров нейронных сетей, поэтому они все работают в режиме torch.no_grad() и не будут учитываться автоградом.
-
torch.nn.init.calculate_gain(nonlinearity, param=None)[source] -
Возвращает рекомендуемое значение усиления для данной функции нелинейности. Значения следующие:
нелинейность
усиление
Линейная / Тождественная
Conv{1,2,3}D
Сигмоида
Тanh
ReLU
Leaky Relu
SELU
Предупреждение
Для реализации самонормализующихся нейронных сетей следует использовать
nonlinearity='linear'вместоnonlinearity='selu'. Это обеспечивает начальным весам дисперсию1 / N, что необходимо для вызова стабильной фиксированной точки в прямом проходе. В отличие от этого, стандартное усиление дляSELUжертвует эффектом нормализации в пользу более стабичного потока градиента в прямоугольных слоях.- Параметры:
-
-
nonlinearity – функция нелинейности (имя
nn.functional) - param – необязательный параметр функции нелинейности
-
nonlinearity – функция нелинейности (имя
Примеры
>>> 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)[source] -
Заполняет тензор входных данных значениями, взятыми из равномерного распределения .
- Параметры:
- Возвращаемое значение:
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.uniform_(w)
-
torch.nn.init.normal_(tensor, mean=0.0, std=1.0)[source] -
Заполняет тензор входных данных значениями, взятыми из нормального распределения .
- Параметры:
- Возвращаемое значение:
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.normal_(w)
-
torch.nn.init.constant_(tensor, val)[source] -
Заполняет тензор входных данных значением .
- Параметры:
- Возвращаемое значение:
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.constant_(w, 0.3)
-
torch.nn.init.ones_(tensor)[source] -
Заполняет тензор входных данных скалярным значением
1.Примеры
>>> w = torch.empty(3, 5) >>> nn.init.ones_(w)
-
torch.nn.init.zeros_(tensor)[source] -
Заполняет тензор входных данных скалярным значением
0.Примеры
>>> w = torch.empty(3, 5) >>> nn.init.zeros_(w)
-
torch.nn.init.eye_(tensor)[source] -
Заполняет двумерный входной
Tensorединичной матрицей. Сохраняет идентичность входных данных вLinearслоях, сохраняя как можно больше входных данных.- Параметры:
-
tensor – двумерный
torch.Tensor
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.eye_(w)
-
torch.nn.init.dirac_(tensor, groups=1)[source] -
Заполняет входные данные {3, 4, 5} размерности дельта-функцией Дирака. Сохраняет идентичность входов в слоях
Convolutional, где сохраняется как можно больше входных каналов. В случае групп > 1 каждая группа каналов сохраняет идентичность.- Параметры:
-
-
tensor – {3, 4, 5}-мерный
torch.Tensor - groups (int, необязательно) – число групп в слое свёртки (по умолчанию: 1)
-
tensor – {3, 4, 5}-мерный
Примеры
>>> 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)[source] -
Заполняет входные данные
Tensorзначениями по методу, описанному вUnderstanding the difficulty of training deep feedforward neural networks, используя равномерное распределение. Результирующий тензор будет содержать значения, взятые из , гдеТакже известен как инициализация 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)[source] -
Заполняет входные данные
Tensorзначениями по методу, описанному вUnderstanding the difficulty of training deep feedforward neural networks, используя нормальное распределение. Результирующий тензор будет содержать значения, взятые из , гдеТакже известен как инициализация 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')[source] -
Заполняет входные данные
Tensorзначениями по методу, описанному вDelving deep into rectifiers: Surpassing human-level performance on ImageNet classification, используя равномерное распределение. Результирующий тензор будет содержать значения, взятые из , гдеТакже известен как инициализация He.
- Параметры:
-
-
tensor (Tensor) – n-мерный
torch.Tensor -
a (float) – отрицательный наклон выпрямителя, используемого после этого слоя (используется только с
'leaky_relu') -
mode (str) – либо
'fan_in'(по умолчанию), либо'fan_out'. Выбор'fan_in'сохраняет величину дисперсии весов в прямом проходе. Выбор'fan_out'сохраняет величины в обратном проходе. -
nonlinearity (str) – нелинейная функция (название
nn.functional), рекомендуется использовать только с'relu'или'leaky_relu'(по умолчанию).
-
tensor (Tensor) – n-мерный
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.kaiming_uniform_(w, mode='fan_in', nonlinearity='relu')
-
torch.nn.init.kaiming_normal_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')[source] -
Заполняет входные данные
Tensorзначениями по методу, описанному вDelving deep into rectifiers: Surpassing human-level performance on ImageNet classification, используя нормальное распределение. Результирующий тензор будет содержать значения, взятые из , гдеТакже известен как инициализация He.
- Параметры:
-
-
tensor (Tensor) – n-мерный
torch.Tensor -
a (float) – отрицательный наклон выпрямителя, используемого после этого слоя (используется только с
'leaky_relu') -
mode (str) – либо
'fan_in'(по умолчанию), либо'fan_out'. Выбор'fan_in'сохраняет величину дисперсии весов в прямом проходе. Выбор'fan_out'сохраняет величины в обратном проходе. -
nonlinearity (str) – нелинейная функция (название
nn.functional), рекомендуется использовать только с'relu'или'leaky_relu'(по умолчанию).
-
tensor (Tensor) – n-мерный
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.kaiming_normal_(w, mode='fan_out', nonlinearity='relu')
-
torch.nn.init.trunc_normal_(tensor, mean=0.0, std=1.0, a=- 2.0, b=2.0)[source] -
Заполняет входной тензор значениями, взятыми из усечённого нормального распределения. Значения фактически берутся из нормального распределения со значениями, выходящими за пределы , которые перевыбираются, пока они не окажутся внутри границ. Метод, используемый для генерации случайных значений, лучше всего работает, когда .
- Parameters:
- Return type:
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.trunc_normal_(w)
-
torch.nn.init.orthogonal_(tensor, gain=1)[source] -
Заполняет входной
Tensor(полу)ортогональной матрицей, как описано вExact solutions to the nonlinear dynamics of learning in deep linear neural networks- Saxe, A. et al. (2013). Входной тензор должен иметь по меньшей мере 2 измерения, а для тензоров с более чем 2 измерениями последующие измерения сглаживаются.- Parameters:
-
-
tensor – n-мерный
torch.Tensor, где - gain – необязательный масштабирующий коэффициент
-
tensor – n-мерный
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.orthogonal_(w)
-
torch.nn.init.sparse_(tensor, sparsity, std=0.01)[source] -
Заполняет 2D входной
Tensorкак разреженную матрицу, где ненулевые элементы будут взяты из нормального распределения , как описано вDeep learning via Hessian-free optimization- Martens, J. (2010).- Parameters:
-
-
tensor – n-мерный
torch.Tensor - sparsity – Доля элементов в каждом столбце, которые будут установлены в ноль
- std – стандартное отклонение нормального распределения, используемого для генерации ненулевых значений
-
tensor – n-мерный
Примеры
>>> w = torch.empty(3, 5) >>> nn.init.sparse_(w, sparsity=0.1)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/nn.init.html