評價此頁

torch.nn.utils.spectral_norm#

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

對給定模組中的引數應用譜歸一化。

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}

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

請參閱 Spectral Normalization for Generative Adversarial Networks

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

  • name (str, optional) – 權重引數的名稱

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

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

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

返回

帶有譜歸一化 hook 的原始模組

返回型別

T_module

注意

此函式已透過新的引數化功能 torch.nn.utils.parametrizations.spectral_norm() 進行了重新實現,該功能使用了 torch.nn.utils.parametrize.register_parametrization() 中的新引數化功能。請使用更新的版本。此函式將在未來的 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])