gpt4 book ai didi

python - 模型使用 SGD 而不是 Adam 进行学习

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:56 25 4
gpt4 key购买 nike

我正在浏览一个基本的 PyTorch MNIST 示例 here并注意到当我将优化器从 SGD 更改为 Adam 时,模型没有收敛。具体来说,我将第 106 行从

optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=args.momentum)

optimizer = optim.Adam(model.parameters(), lr=args.lr)

我认为这不会对模型产生影响。使用 SGD,损失在大约四分之一纪元后迅速降至低值。然而,对于 Adam,即使在 10 个 epoch 之后,损失也根本没有下降。我很好奇为什么会这样;在我看来,它们应该具有几乎相同的性能。

我在 Win10/Py3.6/PyTorch1.01/CUDA9 上运行了这个

为了节省一点点代码挖掘,这里是超参数:

  • lr=0.01
  • 动量=0.5
  • batch_size=64

最佳答案

Adam 以开箱即用的默认参数而闻名,在几乎所有框架中,它的学习率为 0.001(请参阅 KerasPyTorch 中的默认值) , 和 Tensorflow ), 这确实是 Adam paper 中建议的值.

所以,我建议改为

optimizer = optim.Adam(model.parameters(), lr=0.001)

或者只是

optimizer = optim.Adam(model.parameters())

为了让 lr 保持默认值(虽然我会说我很惊讶,因为 MNIST 现在以实际处理您可能投入的任何东西而闻名)。

关于python - 模型使用 SGD 而不是 Adam 进行学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55770783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com