optimizer.step()和scheduler.step()

optimizer.step()和scheduler.step()的區別

optimizer.step()通常用在每個mini-batch之中,而scheduler.step()通常用在epoch裏面,但是不絕對,可以根據具體的需求來做。只有用了optimizer.step(),模型纔會更新,而scheduler.step()是對lr進行調整。通常我們有

optimizer = optim.SGD(model.parameters(), lr = 0.01, momentum = 0.9)
scheduler = lr_scheduler.StepLR(optimizer, step_size = 100, gamma = 0.1)
model = net.train(model, loss_function, optimizer, scheduler, num_epochs = 100)

在scheduler的step_size表示scheduler.step()每調用step_size次,對應的學習率就會按照策略調整一次。所以如果scheduler.step()是放在mini-batch裏面,那麼step_size指的是經過這麼多次迭代,學習率改變一次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章