这是我的代码
optimizer = optim.SGD(net.parameters(), lr=0.1)
scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=5, gamma=0.5)
for i in range(15):
lr = scheduler.get_lr()[0]
lr1 = optimizer.param_groups[0]["lr"]
print(i, lr, lr1)
scheduler.step()
Run Code Online (Sandbox Code Playgroud)
这是结果
0 0.1 0.1
1 0.1 0.1
2 0.1 0.1
3 0.1 0.1
4 0.1 0.1
5 0.025 0.05
6 0.05 0.05
7 0.05 0.05
8 0.05 0.05
9 0.05 0.05
10 0.0125 0.025
11 0.025 0.025
12 0.025 0.025
13 0.025 0.025
14 0.025 0.025
Run Code Online (Sandbox Code Playgroud)
我们可以看到,当scheduler.step()被应用时,学习率首先下降了 0.25 倍,然后反弹回 0.5 倍。是scheduler.get_lr()lr的问题还是lr的问题scheduler.step() …