在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()
答案 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
不一定在整个培训过程中都减少。