pytorch1.1 半精度训练 Adam RMSprop 优化器 Nan 问题

本文分享在PyTorch中进行半精度浮点数训练的经验,针对出现NaN值的问题,提供了解决方案,包括调整网络输入范围、优化器参数设置、降低学习率等策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章转载于https://blog.youkuaiyun.com/one_six_mix/article/details/86367086
因为遇到了同样的问题,所以记录一下
在缩小模型,采用半精度模型,参数,输入数据时,发现adam算法有问题,而sgd没有问题。采用方法如下链接:
这个老哥有相同问题https://www.cnblogs.com/yanxingang/p/10148712.html

以下为转载:

2019/5/5更新
pytorch 1.1 版本相比1.0版本,对 half 训练优化了许多,nan发生的情况少了很多,现在应该可以日常使用 half 训练了
使用Adam优化器时,加入参数eps=1e-4

optimizer1 = optim.Adam(model.parameters(), lr=1e-3, eps=1e-4)

pytorch 半精度浮点数表示的范围比单精度的少很多

1.使网络输入 值域缩放到 [-1, 1] 或 [0, 1]
2.定义Adam优化器时,加入参数eps=1e-3
3.定义RMSprop优化器时,加入参数eps=1e-2
4.降低学习率

optimizer1 = optim.Adam(model.parameters(), lr=0.001, eps=1e-3)
optimizer2 = optim.RMSprop(model.parameters(), lr=0.001, eps=1e-2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值