如何在 PyTorch 中正确实现判别学习率

时间:2021-04-03 17:01:39

标签: machine-learning computer-vision pytorch transfer-learning

我想在我的 PyTorch 代码中实现判别学习率,但我不知道如何去做。现在我有这段代码可以创建一个 SGD 优化器和一个循环学习率调度器。

params, lr_arr, _ = discriminative_lr_params(model, slice(1e-5, 1e-3))
optimizer = torch.optim.SGD(params, lr=1e-3, momentum=0.9, weight_decay=1e-1)
scheduler = torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr=list(lr_arr), max_lr=list(lr_arr*100))

我在哪里使用来自这个 github 的代码:https://github.com/vdouet/Discriminative-learning-rates-PyTorch 对于 discriminative_lr_params 函数。我不确定这是否是在 PyTorch 中使用判别学习率的正确方法,但这是我能找到的唯一方法。然而,当用这个训练时,我得到了非常奇怪的结果: enter image description here

仅使用 SGD 和使用 SGD+Cyclic LR 的训练效果很好:

新加坡元:

optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=0.9, weight_decay=1e-1)

SGD+循环LR:

optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=0.9, weight_decay=1e-1)
scheduler = torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr=1e-3, max_lr=1e-2)

0 个答案:

没有答案