Mikeyboiii

  • 1

    获得赞
  • 1

    发布的文章
  • 0

    答辩的项目

梯度剪裁: torch.nn.utils.clip_grad_norm_()

PyTorch

最后更新 2021-08-19 09:44 阅读 7685

最后更新 2021-08-19 09:44

阅读 7685

PyTorch

梯度剪裁

当神经网络深度逐渐增加,网络参数量增多的时候,反向传播过程中链式法则里的梯度连乘项数便会增多,更易引起梯度消失和梯度爆炸。对于梯度爆炸问题,解决方法之一便是进行梯度剪裁,即设置一个梯度大小的上限。本文介绍了pytorch中梯度剪裁方法的原理和使用方法。

注:为了防止混淆,本文对神经网络中的参数称为“网络参数”,其他程序相关参数成为“参数”。
pytorch中梯度剪裁方法为 torch.nn.utils.clipgrad_norm(parameters, max_norm, norm_type=2)1。三个参数:

parameters:希望实施梯度裁剪的可迭代网络参数
max_norm:该组网络参数梯度的范数上限
norm_type:范数类型

官方对该方法的描述为:

“Clips gradient norm of an iterable of parameters. The norm is computed over all gradients together, as if they were concatenated into a single vector. Gradients are modified in-place.”

“对一组可迭代(网络)参数的梯度范数进行裁剪。效果如同将所有参数连接成单个向量来计算范数。梯度原位修改。”

torch.nn.utils.clipgrad_norm() 的使用应该在loss.backward() 之后,optimizer.step()之前.

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请附上原文出处链接和本声明。
本文链接地址:https://flyai.com/article/970
讨论(0)
500字
表情
发送
删除确认
是否删除该条评论?
取消 删除