torch.nn.init¶
警告
此模块中的所有函数都旨在用于初始化神经网络参数,因此它们都在 torch.no_grad() 模式下运行,并且不会被自动梯度计算考虑在内。
- torch.nn.init.calculate_gain(nonlinearity, param=None)[source]¶
- 返回给定非线性函数的推荐增益值。 - 值如下 - 非线性 - 增益 - 线性/恒等 - Conv{1,2,3}D - Sigmoid - Tanh - ReLU - Leaky Relu - SELU - 警告 - 为了实现 自归一化神经网络 ,您应该使用 - nonlinearity='linear'代替- nonlinearity='selu'。这会给初始权重一个- 1 / N的方差,这是在正向传播中诱导稳定不动点的必要条件。相比之下,- SELU的默认增益牺牲了归一化效果,以获得矩形层中更稳定的梯度流。- 参数
- 非线性 – 非线性函数(nn.functional 名称) 
- 参数 – 非线性函数的可选参数 
 
 - 示例 - >>> 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)[source]¶
- 使用从均匀分布中获取的值填充输入张量。 - . - 参数
- 返回类型
 - 示例 - >>> w = torch.empty(3, 5) >>> nn.init.uniform_(w) 
- torch.nn.init.normal_(tensor, mean=0.0, std=1.0, generator=None)[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]¶
- 使用单位矩阵填充 2 维输入 Tensor。 - 在 Linear 层中保留输入的标识,尽可能多地保留输入。 - 参数
- 张量 – 一个 2 维 torch.Tensor 
 - 示例 - >>> w = torch.empty(3, 5) >>> nn.init.eye_(w) 
- torch.nn.init.dirac_(张量, 组=1)[源代码]¶
- 用狄拉克 delta 函数填充 {3、4、5} 维输入 张量。 - 在 卷积 层中保留输入的标识,尽可能多地保留输入通道。如果组数 > 1,则每组通道都保留标识 - 参数
- 张量 – 一个 {3、4、5} 维 torch.Tensor 
- 组 (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_(张量, 增益=1.0, 生成器=无)[源代码]¶
- 使用 Xavier 均匀分布用值填充输入 张量。 - 该方法在 理解深度前馈神经网络训练的难度 - 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)[source]¶
- 使用 Xavier 正态分布用值填充输入张量。 - 该方法在 了解训练深度前馈神经网络的难度 - 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)[source]¶
- 用 Kaiming 均匀分布填充输入Tensor的值。 - 该方法在 深入整流器:超越 ImageNet 分类中的人类水平性能 - 何凯明等人(2015 年)中进行了描述。结果张量将具有从 中采样的值,其中 - 也称为 He 初始化。 - 参数
 - 示例 - >>> 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', generator=None)[source]¶
- 使用 Kaiming 正态分布用值填充输入Tensor。 - 该方法在深入整流器:超越 ImageNet 分类的人类水平性能中进行了描述 - 何凯明等人(2015 年)。所得张量将从中进行采样,其中 - 也称为 He 初始化。 - 参数
 - 示例 - >>> 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, generator=None)[source]¶
- 使用截断正态分布中抽取的值填充输入张量。 - 这些值有效地从正态分布中抽取 ,其中超出 的值会被重新绘制,直到它们在界限内。当 时,用于生成随机值的方法效果最佳。 - 参数
- 返回类型
 - 示例 - >>> w = torch.empty(3, 5) >>> nn.init.trunc_normal_(w) 
- torch.nn.init.orthogonal_(tensor, gain=1, generator=None)[源代码]¶
- 用(半)正交矩阵填充输入张量。 - 在深度线性神经网络学习的非线性动力学的精确解中描述 - 萨克斯等人。(2013)。输入张量必须至少有 2 个维度,对于维度超过 2 的张量,尾随维度将被展平。 - 示例 - >>> w = torch.empty(3, 5) >>> nn.init.orthogonal_(w)