pytorch Gradient Clipping

梯度裁剪(Gradient Clipping)

import torch.nn as nn

outputs = model(data)
loss= loss_fn(outputs, target)
optimizer.zero_grad()
loss.backward()
nn.utils.clip_grad_norm_(model.parameters(), max_norm=20, norm_type=2)
optimizer.step()

nn.utils.clip_grad_norm_ 的参数:

    • parameters – 一个基于变量的迭代器,会进行梯度归一化
    • max_norm – 梯度的最大范数
    • norm_type – 规定范数的类型,默认为L2