考虑到自适应学习率,如何使用Adam optim?

时间:2019-05-13 14:42:55

标签: pytorch

在Adam优化算法中,根据迭代次数调整学习速度。我不太了解亚当的设计,尤其是在使用批量培训时。使用批处理训练时,如果有19,200张图片,则每次训练64张图片时,等效于300次迭代。如果我们的时代有200次,那么总共有60,000次迭代。我不知道这样的多次迭代是否会将学习速度降低到很小的程度。因此,当我们进行训练时,我们应该在每个时期之后初始化优化还是在整个过程中什么都不做?

使用pytorch。如果我使用批处理火车,则尝试在每个时期后初始化优化程序,而当数据量较小时,我什么也不做。

例如,我不知道这两段代码是否正确:

optimizer = optim.Adam(model.parameters(), lr=0.1)
for epoch in range(100):
    ###Some code
    optim.step()

另一段代码:

for epoch in range(100):
    optimizer = optim.Adam(model.parameters(), lr=0.1)
    ###Some code
    optim.step()

1 个答案:

答案 0 :(得分:0)

您可以在此处https://arxiv.org/pdf/1412.6980.pdf

阅读官方论文

您的更新看起来有点像这样(为简便起见,我省略了预热阶段):

new_theta = old_theta-learning_rate*momentum/(velocity+eps)

这里的直觉是,如果momentum> velocity,则优化器处于平稳状态,因此learning_rate会增加,因为momentum/velocity > 1。另一方面,如果momentum <velocity,则优化器处于陡峭的斜坡或嘈杂的区域,因此learning_rate减小了。

像您在问题中提到的那样,learning_rate不一定在整个培训过程中都减少。