torch.optim.lr_scheduler.StepLR
是 PyTorch 中的一个学习率调整器,按照一定的步长调整学习率。
torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1, verbose=False)
- optimizer:要使用该调度器的优化器。
- step_size:每隔多少个 epoch 进行一次学习率调整。
- gamma:学习率调整的乘数因子,即学习率乘以 gamma 得到新的学习率。
- last_epoch:上一次的 epoch 数,如果不指定则默认为 -1。
- verbose:是否打印学习率调整的信息,默认为 False。
在 PyTorch 中,学习率调度器一般与优化器一起使用,实现在训练过程中动态调整学习率。
1.构建模型: 构建神经网络模型。
2.定义优化器: 创建一个优化器(如 SGD 或 Adam)并将模型的参数传递给它,近年来Adam使用较多。
3.定义学习率调度器StepLR: 创建一个学习率调度器,并将其与优化器关联。
在训练循环中使用: 在每个训练迭代(或每个 epoch)结束时,调用学习率调度器的 step()方法。
# 优化器
optimizer = optim.Adam([{'params': task_params},{'params': model.bert.parameters(), 'lr': config['bert_learning_rate']}],lr=config['task_learning_rate'],eps=config['adam_eps'])
#调度器
scheduler = optim.lr_scheduler.StepLR(optimizer,step_size=int(train_steps * 0.1))
#迭代训练
for _ in trange(int(config["num_epochs"]), desc="Epoch"):random.shuffle(examples)scheduler.step()