【问题标题】:Why loaded Pytorch model's loss highly increased?为什么加载 Pytorch 模型的损失会大大增加?
【发布时间】:2021-02-09 18:11:41
【问题描述】:

我正在尝试参考 to 来训练 Arcface。

据我所知,Arcface 需要在大批量的 CASIA-webface 上进行 200 多次训练。

在 100 个 epoch 的训练中,我停止了一段时间的训练,因为我需要使用 GPU 来完成其他任务。并保存模型(Resnet)和边距的检查点。在停止之前,它的loss记录在0.3~1.0之间,训练准确率达到80~95%。

当我通过使用 load_sate 加载检查点文件来恢复 Arcface 训练时,处理第一批时似乎正常。但是突然损失急剧增加,准确率变得很低。

它的损失突然增加了。这怎么发生的?我没有其他办法,所以无论如何继续训练,但我认为损失并没有很好地减少,即使它是一个超过 100 个 epoch 的训练模型......

当我搜索类似的问题时,他们告诉问题是优化器没有保存(因为参考github页面没有保存优化器,我也是。是真的吗?

My losses after loading

【问题讨论】:

  • 可能是因为没有保存优化器状态。另外,你确定你不是从更高的学习率开始的吗?
  • 感谢您的评论,我解决了。我参考的 github 代码将初始学习率值设置为 0.1,当我将其更改为较小的值时,准确性不会急剧下降。谢谢你的建议。 :) 下次我最好保存优化器..

标签: deep-learning pytorch face-recognition conv-neural-network arcface


【解决方案1】:

如果你看到这个line! 您正在通过 gamma 衰减每个参数组的学习率。 当你达到第 100 个 epoch 时,这改变了你的学习率。而且您在保存模型时没有保存优化器状态。
这使您的代码在恢复训练后以起始 lr 即 0.1 开始。 这又使你的损失增加了。

如果觉得有用,请投票

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多