評價此頁

torch.nn.utils.clip_grads_with_norm_#

torch.nn.utils.clip_grads_with_norm_(parameters, max_norm, total_norm, foreach=None)[原始碼]#

使用預先計算的總範數和期望的最大範數,按比例縮放參數的可迭代梯度。

梯度將透過以下計算進行縮放:

grad=gradmin(max_normtotal_norm+1e6,1)grad = grad * \min(\frac{max\_norm}{total\_norm + 1e-6}, 1)

梯度會就地修改。

注意:比例係數被限制在最大值為 1.0,以防止梯度放大。這確保了只有當總範數超過 max_norm 時,梯度才會被縮小。

此函式等效於 torch.nn.utils.clip_grad_norm_(),但使用了預先計算的總範數。

引數
  • parameters (Iterable[Tensor] or Tensor) – 將要被歸一化梯度的 Tensor 可迭代物件或單個 Tensor

  • max_norm (float) – 梯度的最大範數

  • total_norm (Tensor) – 用於裁剪的梯度的總範數

  • foreach (bool) – 使用更快的基於 foreach 的實現。如果為 None,則對 CUDA 和 CPU 原生張量使用 foreach 實現,併為其他裝置型別靜默回退到慢速實現。預設為 None

返回

返回型別