torch.nn.utils.clip_grad_norm_#
- torch.nn.utils.clip_grad_norm_(parameters, max_norm, norm_type=2.0, error_if_nonfinite=False, foreach=None)[源代码]#
对可迭代参数的梯度范数进行裁剪。
范数是根据所有参数的各个梯度的范数计算的,就好像各个梯度的范数被连接成一个单独的向量一样。梯度被就地修改。
此函数等效于
torch.nn.utils.get_total_norm()
,然后是torch.nn.utils.clip_grads_with_norm_()
,并使用get_total_norm
返回的total_norm
。- 参数
parameters (Iterable[Tensor] or Tensor) – 将要被归一化梯度的 Tensor 可迭代对象或单个 Tensor
max_norm (float) – 梯度的最大范数
norm_type (float, optional) – 使用的 p-范数类型。可以是
'inf'
表示无穷范数。默认为 2.0error_if_nonfinite (bool, optional) – 如果为 True,则在
parameters
的总梯度范数为nan
、inf
或-inf
时抛出错误。默认为 Falseforeach (bool, optional) – 使用更快的基于 foreach 的实现。如果为
None
,则对 CUDA 和 CPU 原生 Tensor 使用 foreach 实现,并对其他设备类型静默回退到慢速实现。默认为None
- 返回
参数梯度的总范数(视作单个向量)。
- 返回类型