optimizer = optim.SGD(pg, lr=args.lr, momentum=0.9, weight_decay=5E-5)
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)
optimizer指定使用哪个优化器;
scheduler对优化器的学习率进行调整。
只有用了optimizer.step(),模型才会更新;而scheduler.step()是对lr进行调整。optimizer.step()通常用在每个mini-batch里面,而scheduler.step()通常用在epoch里面。
optimizer种类有:
- optim.SGD
- optim.Adam
scheduler种类有:
pytorch有torch.optim.lr_scheduler模块提供了一些根据epoch训练次数来调整学习率(learning rate)的方法。一般情况下我们会设置随着epoch的增大而逐渐减小学习率从而达到更好的训练效果。学习率的调整应该放在optimizer更新之后。
- torch.optim.lr_scheduler.LambdaLR
- torch.optim.lr_scheduler.StepLR
- torch.optim.lr_scheduler.MultiStepLR
- torch.optim.lr_scheduler.ExponentialLR
本文介绍了PyTorch中优化器(optimizer)与学习率调度器(scheduler)的使用方法。详细解释了不同类型的优化器如SGD、Adam及学习率调度策略如LambdaLR、StepLR等,并探讨了它们在训练过程中的作用时机。
2506

被折叠的 条评论
为什么被折叠?



