2

我正在使用带有优化器的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 发生变化?
4

0 回答 0