the*_*son 2 python adam machine-learning pytorch sgd
我在这里浏览了一个基本的 PyTorch MNIST 示例,并注意到当我将优化器从 SGD 更改为 Adam 时,模型没有收敛。具体来说,我将第 106 行从
optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=args.momentum)
Run Code Online (Sandbox Code Playgroud)
到
optimizer = optim.Adam(model.parameters(), lr=args.lr)
Run Code Online (Sandbox Code Playgroud)
我认为这不会对模型产生影响。使用 SGD,损失在大约四分之一的 epoch 后迅速降至低值。然而,对于 Adam,即使在 10 个 epoch 之后,损失也没有下降。我很好奇为什么会这样;在我看来,这些应该具有几乎相同的性能。
我在 Win10/Py3.6/PyTorch1.01/CUDA9 上运行这个
为了节省一点代码挖掘的时间,这里是超参数:
亚当是著名的,其包装盒的工作了默认paremeters,其中,在几乎所有的框架,包括0.001学习速率(见默认值Keras,PyTorch和Tensorflow),这的确是在建议值亚当纸。
所以,我建议改为
optimizer = optim.Adam(model.parameters(), lr=0.001)
Run Code Online (Sandbox Code Playgroud)
或者干脆
optimizer = optim.Adam(model.parameters())
Run Code Online (Sandbox Code Playgroud)
为了保留lr其默认值(尽管我会说我很惊讶,因为现在 MNIST 以实际处理您可能投入的任何内容而闻名)。
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |