发现可以通过optimzer.param_group来动态调整学习率,而且注意这里param_group出现的顺序就是param中定义的顺序。
import torch.optim as optim
lr1=0.1
lr2=0.2
params = [
{"params": filter(lambda p: p.requires_grad, self.model.a.parameters() if
args.num_gpu == 1 else self.model.module.a.parameters()),
"lr": lr1
},
{"params": filter(lambda p: p.requires_grad, self.model.b.parameters() if
args.num_gpu==1 else self.model.module.b.parameters()),
"lr": lr2
}
]
optimizer = optim.Adam(params, betas=(args.beta1, args.beta2), eps=args.eps)
for param_group in optimizer.param_groups:
print(param_group['lr'])