评价此页

torch.nn.utils.clip_grads_with_norm_#

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

将一组参数的梯度根据预先计算的总范数和期望的最大范数进行缩放。

梯度将通过以下计算进行缩放:

grad=gradmax_normtotal_norm+1e6grad = grad * \frac{max\_norm}{total\_norm + 1e-6}

梯度会就地修改。

此函数等同于使用预先计算的总范数的 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 本地 Tensor 使用 foreach 实现,并对其他设备类型静默回退到慢速实现。默认为 None

返回

返回类型