评价此页

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

返回

返回类型