torch.nn.init¶
警告
此模組中的所有函式都旨在用於初始化神經網路參數,因此它們都在 torch.no_grad() 模式下運行,並且不會被自動微分考慮在內。
- 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的預設增益犧牲了正規化的效果,以在矩形層中獲得更穩定的梯度流。- 參數
- 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, 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]¶
- 使用單位矩陣填充二維輸入 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} 維輸入 Tensor。 - 在 Convolutional 層中保留輸入的身份,盡可能保留盡可能多的輸入通道。如果 groups>1,則每組通道都保留身份 - 參數
- tensor - 一個 {3、4、5} 維的 torch.Tensor 
- groups (int, optional) - 卷積層中的組數(默認值: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)[source]¶
- 使用 Xavier 均勻分佈填充輸入 Tensor。 - 該方法在 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)[原始碼]¶
- 使用 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)[原始碼]¶
- 使用 Kaiming 均勻分佈的值填入輸入 張量。 - 該方法在 深入研究整流器:在 ImageNet 分類上超越人類水平的表現 - He、K. 等人 (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)[原始碼]¶
- 使用 Kaiming 常態分佈的值填入輸入 張量。 - 此方法在 Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification - He, K. et al. (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)[source]¶
- 使用(半)正交矩陣填充輸入 張量。 - 在 Exact solutions to the nonlinear dynamics of learning in deep linear neural networks - Saxe, A. et al. (2013) 中有所描述。輸入張量必須至少有 2 個維度,對於具有 2 個以上維度的張量,尾隨維度將被展平。 - 參數
 - 範例 - >>> w = torch.empty(3, 5) >>> nn.init.orthogonal_(w)