快捷方式

torch.nn.utils.spectral_norm

torch.nn.utils.spectral_norm(module, name='weight', n_power_iterations=1, eps=1e-12, dim=None)[source][source]

對給定模組中的參數應用譜歸一化 (spectral normalization)。

WSN=Wσ(W),σ(W)=maxh:h0Wh2h2\mathbf{W}_{SN} = \dfrac{\mathbf{W}}{\sigma(\mathbf{W})}, \sigma(\mathbf{W}) = \max_{\mathbf{h}: \mathbf{h} \ne 0} \dfrac{\|\mathbf{W} \mathbf{h}\|_2}{\|\mathbf{h}\|_2}

譜歸一化透過使用冪迭代法 (power iteration method) 計算出的權重矩陣的譜範數 σ\sigma 重新縮放權重張量,從而穩定生成對抗網路 (GANs) 中判別器(評估器)的訓練。如果權重張量的維度大於 2,則在冪迭代法中將其重新塑形為 2D 以獲得譜範數。 這是透過一個 Hook 來實現的,該 Hook 在每次 forward() 呼叫之前計算譜範數並重新縮放權重。

參見 Spectral Normalization for Generative Adversarial Networks

參數
  • module (nn.Module) – 包含模組

  • name (str, 可選) – 權重參數的名稱

  • n_power_iterations (int, 可選) – 用於計算譜範數的冪迭代次數

  • eps (float, 可選) – 用於計算範數時的數值穩定性的 epsilon 值

  • dim (int, 可選) – 對應於輸出數量的維度,預設值為 0,但對於 ConvTranspose{1,2,3}d 的實例模組,則為 1

返回

具有譜範數 Hook 的原始模組

返回類型

T_module

注意

此函數已使用 torch.nn.utils.parametrize.register_parametrization() 中的新參數化功能重新實現為 torch.nn.utils.parametrizations.spectral_norm()。 請使用較新版本。 此函數將在未來版本的 PyTorch 中棄用。

範例

>>> m = spectral_norm(nn.Linear(20, 40))
>>> m
Linear(in_features=20, out_features=40, bias=True)
>>> m.weight_u.size()
torch.Size([40])

文件

存取 PyTorch 的完整開發者文件

檢視文件

教學

取得針對初學者和進階開發者的深入教學

檢視教學

資源

尋找開發資源並獲得問題解答

檢視資源