1、将学习率降为原来的十分之一
optimizer = optim.SGD(pg, lr=args.lr, momentum=0.9, weight_decay=0.005)
# Scheduler https://arxiv.org/pdf/1812.01187.pdf
lf = lambda x: ((1 + math.cos(x * math.pi / args.epochs)) / 2) * (1 - args.lrf) + args.lrf # cosine
scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf)
这里我们使用了SGD优化器,定义了一个lambda函数,依次递减,
这样就将开始的学习率降到了原始的十分之一。
2、每隔几步就降低一次学习率
我们看一下这个代码,将有梯度的参数传入到优化器中,初始学习率为0.005,动量为0.9,然后是每隔5步就下降一次,下降为原来的0.33.
params =[p for p in model.parameters() if p.requires_grad]
optimizer = torch.optim.SGD(params,1r=0.005,
momentum=0.9,weight_decay=0.0005)
# learning rate scheduler
1r_scheduler = torch.optim.lr_scheduler.StepLR(optimizer,
step_size=5,
gmma=0.33)