目录

torch.nn.init

torch.nn.init.calculate_gain(非线性param=None[来源]

返回给定非线性函数的推荐增益值。 值如下所示:

非线性

获得

线性 / 恒等

11

Conv{1,2,3}D

11

乙状结肠

11

53\frac{5}{3}

ReLU 系列

2\sqrt{2}

Leaky Relu

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

色鲁

34\frac{3}{4}

警告

为了实现自归一化神经网络 , 您应该使用 ,而不是 . 这为初始权重提供了 , 这对于在正向传递中诱导稳定的固定点是必要的。 相反,的默认增益牺牲了归一化 效果,以便在矩形层中实现更稳定的梯度流。nonlinearity='linear'nonlinearity='selu'1 / NSELU

参数
  • nonlinearity – 非线性函数 (nn.函数名称)

  • param – 非线性函数的可选参数

例子

>>> gain = nn.init.calculate_gain('leaky_relu', 0.2)  # leaky_relu with negative_slope=0.2
torch.nn.init.uniform_(张量a=0.0,b=1.0[来源]

使用从 uniform 中提取的值填充输入 Tensor 分配U(一个,b)\mathcal{U}(a, b).

参数
  • tensor – 一个 n 维火torch.Tensor

  • a – 均匀分布的下限

  • b – 均匀分布的上限

例子

>>> w = torch.empty(3, 5)
>>> nn.init.uniform_(w)
torch.nn.init.normal_(张量平均值=0.0标准=1.0[来源]

使用从法线中提取的值填充输入 Tensor 分配N(意味 着,性病2)\mathcal{N}(\text{mean}, \text{std}^2).

参数
  • tensor – 一个 n 维火torch.Tensor

  • mean – 正态分布的平均值

  • std – 正态分布的标准差

例子

>>> w = torch.empty(3, 5)
>>> nn.init.normal_(w)
torch.nn.init.constant_(张量val[来源]

将 input Tensor 填充值瓦尔\text{val}.

参数
  • tensor – 一个 n 维火torch.Tensor

  • val – 用于填充张量的值

例子

>>> w = torch.empty(3, 5)
>>> nn.init.constant_(w, 0.3)
torch.nn.init.ones_(张量[来源]

用标量值 1 填充输入 Tensor。

参数

tensor – 一个 n 维火torch.Tensor

例子

>>> w = torch.empty(3, 5)
>>> nn.init.ones_(w)
torch.nn.init.zeros_(张量[来源]

用标量值 0 填充输入 Tensor。

参数

tensor – 一个 n 维火torch.Tensor

例子

>>> w = torch.empty(3, 5)
>>> nn.init.zeros_(w)
torch.nn.init.eye_(张量[来源]

用恒等式填充二维输入 Tensor 矩阵。保留线性层中输入的标识,其中 尽可能保留许多输入。

参数

tensor – 一个 2 维火torch.Tensor

例子

>>> w = torch.empty(3, 5)
>>> nn.init.eye_(w)
torch.nn.init.dirac_(张量=1[来源]

用 Dirac 填充 {3, 4, 5} 维输入 Tensor delta 函数。保留卷积层中 inputs 的标识,其中保留了尽可能多的 input 通道。倘 of groups>1,每组通道都保留身份

参数
  • tensor – 一个 {3, 4, 5} 维火torch.Tensor

  • groupsoptional) – conv 层中的组数 (默认值: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_(张量增益=1.0[来源]

根据方法用值填充输入 Tensor 如了解训练深度前馈的难度中所述 神经网络 - Glorot, X. & Bengio, Y. (2010),使用统一的 分配。生成的张量将具有从U(一个,一个)\mathcal{U}(-a, a)哪里

一个=获得×6fan_in+fan_outa = \text{gain} \times \sqrt{\frac{6}{\text{fan\_in} + \text{fan\_out}}}

也称为 Glorot 初始化。

参数
  • tensor – 一个 n 维火torch.Tensor

  • gain – 可选的缩放因子

例子

>>> w = torch.empty(3, 5)
>>> nn.init.xavier_uniform_(w, gain=nn.init.calculate_gain('relu'))
torch.nn.init.xavier_normal_(张量增益=1.0[来源]

根据方法用值填充输入 Tensor 如了解训练深度前馈的难度中所述 神经网络 - Glorot, X. & Bengio, Y. (2010),使用法线 分配。生成的张量将具有从N(0,性病2)\mathcal{N}(0, \text{std}^2)哪里

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

也称为 Glorot 初始化。

参数
  • tensor – 一个 n 维火torch.Tensor

  • gain – 可选的缩放因子

例子

>>> w = torch.empty(3, 5)
>>> nn.init.xavier_normal_(w)
torch.nn.init.kaiming_uniform_(张量a=0模式='fan_in'非线性='leaky_relu'[来源]

根据方法用值填充输入 TensorDelving Deep into rectifiers: Beyonding human level (深入研究整流器:超越人类水平) 中描述道 ImageNet 分类的性能 - He, K. et al. (2015) 使用 均匀分布。生成的张量将具有从U(绑定,绑定)\mathcal{U}(-\text{bound}, \text{bound})哪里

绑定=获得×3fan_mode\text{bound} = \text{gain} \times \sqrt{\frac{3}{\text{fan\_mode}}}

也称为 He 初始化。

参数
  • tensor – 一个 n 维火torch.Tensor

  • a – 此层之后使用的整流器的负斜率(仅 用于'leaky_relu')

  • mode – (默认) 或 .选择 将保留 向前传球。选择此项将保留 向后传递。'fan_in''fan_out''fan_in''fan_out'

  • nonlinearity – 非线性函数 (nn.函数名称), 建议仅与 OR 一起使用(默认)。'relu''leaky_relu'

例子

>>> w = torch.empty(3, 5)
>>> nn.init.kaiming_uniform_(w, mode='fan_in', nonlinearity='relu')
torch.nn.init.kaiming_normal_(张量a=0模式='fan_in'非线性='leaky_relu'[来源]

根据方法用值填充输入 TensorDelving Deep into rectifiers: Beyonding human level (深入研究整流器:超越人类水平) 中描述道 ImageNet 分类的性能 - He, K. et al. (2015) 使用 正态分布。生成的张量将具有从N(0,性病2)\mathcal{N}(0, \text{std}^2)哪里

性病=获得fan_mode\text{std} = \frac{\text{gain}}{\sqrt{\text{fan\_mode}}}

也称为 He 初始化。

参数
  • tensor – 一个 n 维火torch.Tensor

  • a – 此层之后使用的整流器的负斜率(仅 用于'leaky_relu')

  • mode – (默认) 或 .选择 将保留 向前传球。选择此项将保留 向后传递。'fan_in''fan_out''fan_in''fan_out'

  • nonlinearity – 非线性函数 (nn.函数名称), 建议仅与 OR 一起使用(默认)。'relu''leaky_relu'

例子

>>> w = torch.empty(3, 5)
>>> nn.init.kaiming_normal_(w, mode='fan_out', nonlinearity='relu')
torch.nn.init.orthogonal_(张量增益=1[来源]

用(半)正交矩阵填充输入 Tensor,如 在 Exact solutions to the nonlinear dynamics of learning in deep 中进行了描述 线性神经网络 - Saxe, A. et al. (2013)。输入张量必须具有 至少 2 个维度,对于维度超过 2 个的张量, 尾随维度被展平。

参数
  • tensor – 一个 n 维Torch。Tensor 的 Tensor 中,其中n2n \geq 2

  • gain – 可选缩放因子

例子

>>> w = torch.empty(3, 5)
>>> nn.init.orthogonal_(w)
torch.nn.init.sparse_(张量稀疏度std=0.01[来源]

将 2D 输入 Tensor 填充为稀疏矩阵,其中 非零元素将从正态分布中提取N(0,0.01)\mathcal{N}(0, 0.01),如 深度学习方式 无 Hessian 优化 - Martens, J. (2010)。

参数
  • tensor – 一个 n 维火torch.Tensor

  • sparsity – 每列中要设置为零的元素的比例

  • std – 用于生成的正态分布的标准差 非零值

例子

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

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源