Q: 为什么我使用单GPU训练loss会出NaN
?
A: 配置文件中原始学习率是适配多GPU训练(8x GPU),若使用单GPU训练,须对应调整学习率(例如,除以8)。
以faster_rcnn_r50 为例,在静态图下计算规则表如下所示,它们是等价的,表中变化节点即为piecewise decay
里的boundaries
:
GPU数 | batch size/卡 | 学习率 | 最大轮数 | 变化节点 |
---|---|---|---|---|
2 | 1 | 0.0025 | 720000 | [480000, 640000] |
4 | 1 | 0.005 | 360000 | [240000, 320000] |
8 | 1 | 0.01 | 180000 | [120000, 160000] |
- 上述方式适用于静态图下。在动态图中,由于训练以epoch方式计数,因此调整GPU卡数后只需要修改学习率即可,修改方式和静态图相同.