gpt4 book ai didi

python - 在 PyTorch 中设置随机权重平均的学习率

转载 作者:行者123 更新时间:2023-12-04 07:16:36 24 4
gpt4 key购买 nike

以下是 Pytorch 中随机权重平均的一小段工作代码,取自 here .

loader, optimizer, model, loss_fn = ...
swa_model = torch.optim.swa_utils.AveragedModel(model)
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=300)
swa_start = 160
swa_scheduler = SWALR(optimizer, swa_lr=0.05)

for epoch in range(300):
for input, target in loader:
optimizer.zero_grad()
loss_fn(model(input), target).backward()
optimizer.step()
if epoch > swa_start:
swa_model.update_parameters(model)
swa_scheduler.step()
else:
scheduler.step()

# Update bn statistics for the swa_model at the end
torch.optim.swa_utils.update_bn(loader, swa_model)
# Use swa_model to make predictions on test data
preds = swa_model(test_input)
在第 160 个纪元之后的此代码中 swa_scheduler用于代替通常的 scheduler .什么 swa_lr表示? documentation说,

Typically, in SWA the learning rate is set to a high constant value. SWALR is a learning rate scheduler that anneals the learning rate to a fixed value, and then keeps it constant.


  • 那么optimizer的学习率会发生什么变化?在第 160 个时代之后?
  • 是否swa_lr影响optimizer学习率?

  • 假设在代码的开头 optimizerADAM1e-4 的学习率初始化.那么上面的代码是否意味着对于前 160 个时期的训练学习率将是 1e-4然后对于剩余的时期数,它将是 swa_lr=0.05 ?如果是,定义 swa_lr 是个好主意吗?也到 1e-4 ?

    最佳答案


  • does the above code imply that for the first 160 epochs the learning rate for training will be 1e-4


    不,它不会等于 1e-4 ,在前 160 个 epoch 期间,学习率由第一个调度程序管理 scheduler .这是一个初始化为 torch.optim.lr_scheduler.CosineAnnealingLR .学习率将遵循以下曲线:
    enter image description here

  • for the remaining number of epochs it will be swa_lr=0.05


    这是部分正确的,在第二部分 - 从 160 纪元开始 - 优化器的学习率将由第二个调度器处理 swa_scheduler .这个被初始化为 torch.optim.swa_utils.SWALR .您可以在文档页面上阅读:

    SWALR is a learning rate scheduler that anneals the learning rate to a fixed value [swa_lr], and then keeps it constant.


    默认情况下(参见 source code ),退火前的 epoch 数等于 10。因此,从 epoch 170 到 epoch 300 的学习率将等于 swa_lr并将保持这种状态。第二部分将是:
    enter image description here
    这个完整的配置文件,即两个部分:
    enter image description here

  • If yes, is it a good idea to define swa_lr also to 1e-4


    它在文档中提到:

    Typically, in SWA the learning rate is set to a high constant value.


    设置 swa_lr1e-4将导致以下学习率配置文件:
    enter image description here
  • 关于python - 在 PyTorch 中设置随机权重平均的学习率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68726290/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com