PyTorch梯度裁剪避免训练loss nan

阅读: 评论:0

PyTorch梯度裁剪避免训练loss nan

PyTorch梯度裁剪避免训练loss nan

近来在训练检测网络的时候会出现loss为nan的情况,需要中断重新训练,会很麻烦。因而选择使用PyTorch提供的梯度裁剪库来对模型训练过程中的梯度范围进行限制,修改之后,不再出现loss为nan的情况。

PyTorch中采用utils.clip_grad_norm_来实现梯度裁剪,链接如下:

.html

训练代码使用示例如下:

utils import clip_grad_norm_outputs = model(data)
loss= loss_fn(outputs, target)
_grad()
loss.backward()# clip the grad
clip_grad_norm_(model.parameters(), max_norm=20, norm_type=2)optimizer.step()

其中,max_norm为梯度的最大范数,也是梯度裁剪时主要设置的参数。


备注:网上有同学提醒在(强化学习)使用了梯度裁剪之后训练时间会大大增加。目前在我的检测网络训练中暂时还没有碰到这个问题,以后遇到再来更新。

本文发布于:2024-01-29 10:20:03,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170649480814598.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:梯度   PyTorch   nan   loss
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23