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

文章转载于https://blog.csdn.net/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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章