我正在使用带有优化器的StepLR
调度程序:Adam
optimizer = torch.optim.Adam(model.parameters(), lr=LrMax, weight_decay=decay) # , betas=(args.beta1, args.beta2)
print(f'Optimizer = {repr(optimizer)}')
scheduler = StepLR(optimizer, step_size=5, gamma=0.2)
初始学习率lr设置为 0.1。在第一个 epoch 结束时,情况稳定:
Train: Epoch 0 Batch=601 totalBatches=601 lr=0.1: Loss=2.5451838970184326 accuracy=0.1875
Train: Epoch 0 Batch=651 totalBatches=651 lr=0.1: Loss=3.527266025543213 accuracy=0.1875
Train: Epoch 0 Batch=656 totalBatches=656 lr=0.1: Loss=2.9547425508499146 accuracy=0.1875
但是当午夜的钟声敲响时,我们进入 epoch1 并且学习率调度器变得疯狂:
Train: Epoch 1 Batch=45 totalBatches=701 lr=2.722258935367529e-93: Loss=2.878746271133423
accuracy=0.25
- 为什么学习率下降了 10^92 ?
- 为什么学习率在第一个 epoch 而不是 epoch 5 发生变化?