Spec-Zone.ru › PyTorch 1

torch.nn.init

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

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

torch.nn.init.calculate_gain(nonlinearity, param=None) [source]

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

нелинейность

усиление

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

11

Conv{1,2,3}D

11

Сигмоида

11

Тanh

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 – функция нелинейности (имя nn.functional)
  • param – необязательный параметр функции нелинейности

Примеры

>>> 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]

Заполняет тензор входных данных значениями, взятыми из равномерного распределения U(a,b)\mathcal{U}(a, b).

Параметры:
  • tensor (Tensor) – n-мерный torch.Tensor
  • a (float) – нижняя граница равномерного распределения
  • b (float) – верхняя граница равномерного распределения
Возвращаемое значение:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.uniform_(w)
torch.nn.init.normal_(tensor, mean=0.0, std=1.0) [source]

Заполняет тензор входных данных значениями, взятыми из нормального распределения N(mean,std2)\mathcal{N}(\text{mean}, \text{std}^2).

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

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.normal_(w)
torch.nn.init.constant_(tensor, val) [source]

Заполняет тензор входных данных значением 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) [source]

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

Параметры:

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

Возвращаемое значение:

Tensor

Примеры

>>> w = torch.empty(3, 5)
>>> nn.init.ones_(w)
torch.nn.init.zeros_(tensor) [source]

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

Параметры:

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

Возвращаемое значение:

Tensor

Примеры

>>> 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)

Примеры

>>> 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, используя равномерное распределение. Результирующий тензор будет содержать значения, взятые из 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) – необязательный коэффициент масштабирования
Тип возвращаемого значения:

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) [source]

Заполняет входные данные Tensor значениями по методу, описанному в Understanding the difficulty of training deep feedforward neural networks, используя нормальное распределение. Результирующий тензор будет содержать значения, взятые из 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) – необязательный коэффициент масштабирования
Тип возвращаемого значения:

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') [source]

Заполняет входные данные Tensor значениями по методу, описанному в Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification, используя равномерное распределение. Результирующий тензор будет содержать значения, взятые из 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 (str) – либо 'fan_in' (по умолчанию), либо 'fan_out'. Выбор 'fan_in' сохраняет величину дисперсии весов в прямом проходе. Выбор 'fan_out' сохраняет величины в обратном проходе.
  • nonlinearity (str) – нелинейная функция (название nn.functional), рекомендуется использовать только с 'relu' или 'leaky_relu' (по умолчанию).

Примеры

>>> 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, используя нормальное распределение. Результирующий тензор будет содержать значения, взятые из 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 (str) – либо 'fan_in' (по умолчанию), либо 'fan_out'. Выбор 'fan_in' сохраняет величину дисперсии весов в прямом проходе. Выбор 'fan_out' сохраняет величины в обратном проходе.
  • nonlinearity (str) – нелинейная функция (название nn.functional), рекомендуется использовать только с 'relu' или 'leaky_relu' (по умолчанию).

Примеры

>>> 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]

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

Parameters:
  • tensor (Tensor) – n-мерный torch.Tensor
  • mean (float) – среднее значение нормального распределения
  • std (float) – стандартное отклонение нормального распределения
  • a (float) – минимальное граничное значение
  • b (float) – максимальное граничное значение
Return type:

Tensor

Примеры

>>> 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, где n≥2n \geq 2
  • gain – необязательный масштабирующий коэффициент

Примеры

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

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

Parameters:
  • tensor – n-мерный torch.Tensor
  • sparsity – Доля элементов в каждом столбце, которые будут установлены в ноль
  • std – стандартное отклонение нормального распределения, используемого для генерации ненулевых значений

Примеры

>>> 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

Spec-Zone.ru

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