[ 用法不同:涉及上下文修改 ]torch.nn.utils.clip_grad_value_

torch.nn.utils.clip_grad_value_

torch.nn.utils.clip_grad_value_(parameters,
                                clip_value)

paddle.nn.ClipGradByValue

paddle.nn.ClipGradByValue(max,
                          min=None)

其中 Pytorch 的 clip_value 与 Paddle 的 max 用法不一致,具体如下:

参数映射

PyTorch PaddlePaddle 备注
parameters - 表示要操作的 Tensor,Pytorch 属于原位操作,PaddlePaddle 无此参数,需要实例化之后在 optimizer 中设置才可以使用。
clip_value max 表示裁剪梯度的范围,范围为 $[-clip_value, clip_vale]$,PaddlePaddle 的 max 参数可对应实现该参数功能。
- min 表示裁剪梯度的最小值,PyTorch 无此参数,Paddle 保持默认即可。

转写示例

# torch 用法
net = Model()
sgd = torch.optim.SGD(net.parameters(), lr=0.1)
for i in range(10):
    loss = net(x)
    loss.backward()
    torch.nn.utils.clip_grad_value_(net.parameters(), 1.)
    sgd.step()

# paddle 用法
net = Model()
sgd = paddle.optim.SGD(net.parameters(), lr=0.1, grad_clip=paddle.nn.ClipGradByValue(), 1.)
for i in range(10):
    loss = net(x)
    loss.backward()
    sgd.step()