clip_grad_norm_¶
- paddle.nn.utils. clip_grad_norm_ ( parameters, max_norm, norm_type=2.0, error_if_nonfinite=False ) [源代码] ¶
对传入所有带有梯度参数进行梯度裁剪。范数会在所有梯度上一起计算,类似在计算一个更大的向量。梯度会在适当位置进行裁剪。
这个 API 只能在动态图上使用,暂时不支持静态图模式。
参数¶
parameters (Iterable[paddle.Tensor] or paddle.Tensor) - 需要参与梯度裁剪的一个 Tensor 或者多个 Tensor。
max_norm (float or int) - 梯度的最大范数。
norm_type (float or int) - 所用 p-范数类型。可以是无穷范数的`inf`。
error_if_nonfinite (bool) - 如果为 True,且如果来自:attr:parameters`的梯度的总范数为`nan、inf`或-inf`,则抛出错误。
返回¶
参数梯度的总范数(视为一个单独的变量)
代码示例¶
import paddle
x = paddle.uniform([10, 10], min=-1.0, max=1.0, dtype='float32')
max_norm = float(5.0)
linear = paddle.nn.Linear(in_features=10, out_features=10)
out = linear(x)
loss = paddle.mean(out)
loss.backward()
paddle.nn.utils.clip_grad_norm_(linear.parameters(), max_norm)
sdg = paddle.optimizer.SGD(learning_rate=0.1, parameters=linear.parameters())
sdg.step()