Machine learning 如何在PyTorch中正确实施区分学习率

Machine learning 如何在PyTorch中正确实施区分学习率,machine-learning,computer-vision,pytorch,transfer-learning,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_sche

我想在我的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中的代码: 对于判别函数。我不确定这是否是在PyTorch中使用区分学习率的正确方法,但这是我能够找到的唯一方法。然而,当我用这个进行训练时,我得到了非常奇怪的结果:

仅使用SGD和SGD+循环LR的培训效果良好:

新加坡元:

optimizer=torch.optim.SGD(model.parameters(),lr=1e-3,动量=0.9,重量衰减=1e-1)

新加坡元+循环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)