pytorch 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指的是经过这么多次迭代,学习率改变一次。


参考

https://www.bilibili.com/read/cv9032061/

你可能感兴趣的:(pytorch optimizer.step()和scheduler.step())