在pytorch中动态调整优化器的学习率

在深度学习中,经常需要动态调整学习率,以达到更好地训练效果,本文纪录在pytorch中的实现方法,其优化器实例为SGD优化器,其他如Adam优化器同样适用。

一般来说,在以SGD优化器作为基本优化器,然后根据epoch实现学习率指数下降,代码如下:

step = [10,20,30,40]
base_lr = 1e-4
sgd_opt = torch.optim.SGD(model.parameters(), lr=base_lr, nesterov=True, momentum=0.9)
def adjust_lr(epoch):
	lr = base_lr * (0.1 ** np.sum(epoch >= np.array(step)))
    for params_group in sgd_opt.param_groups:
        params_group['lr'] = lr
    return lr

只需要在每个train的epoch之前使用这个函数即可。

for epoch in range(60):
	model.train()
	adjust_lr(epoch)
	for ind, each in enumerate(train_loader):
		mat, label = each
		...	

你可能感兴趣的:(PyTorch)