如何在pytorch中使用Schedule和warmup_steps?
在机器学习中,schedule的使用非常重要,用于调整学习率,并且warmup_steps也参与了schedule的使用,作为耐心系数。在下面的文章中,我们将学习如何使用pytorch进行调度。
1。 lr_scheduler相关
lr_scheduler = WarmupLinearSchedule(optimizer, Warmup_steps=args.warmup_steps, t_total=num_train_optimization_steps)
其中args.warmup_steps可以认为是耐心系数
num_train_optimization_steps为模型参数更新总次数
一般来说:
num_train_optimization_steps = int(total_train_examples / args.train_batch_size / args.gradient_accumulation_steps)
Schedule 用于调整学习率。以线性变换调整为例。在下面的代码中,step是当前的迭代次数。
def lr_lambda(自我, 步骤):
# 线性变换返回某个值x,然后返回到类LambdaLR,最后返回old_lr*x
if step < self.warmup_steps: # 提高学习率
返回 float(step) / float(max(1, self.warmup_steps))
# 降低学习率
返回 max(0.0, float(self.t_total - 步骤) / float(max(1.0, self.t_total - self.warmup_steps)))
实际运行时,lr_scheduler.step()首先将lr初始化为0,第一次参数更新时,step=1,lr从0变为初始值initial_lr;第二次更新时,step=2,以上代码生成某个实数alpha,new lr=initial_lr *alpha;第三次更新时,根据initial_lr生成新的lr,即新的lr=initial_lr *alpha。
warmup_steps可以认为是lr调整的耐心系数。
由于warmup_steps的存在,lr先慢慢增加,当超过warmup_steps后,lr慢慢减少。
实际中,因为训练开始时,训练数据计算出的grad可能与预期方向相反,所以此时使用较小的lr。随着迭代次数的增加,lr线性增加,增长率为1/warmup_steps;当迭代次数等于warmup_steps时,学习率为初始设定的学习率;当迭代次数超过warmup_steps时,学习率以1/(total-warmup_steps)的衰减率逐渐衰减,然后进行微调。
2。 gradient_accumulation_steps相关
gradient_accumulation_steps通过累加梯度的方式解决本地显存不足的问题。
假设原来的batch_size=6,总样本量为24,gradient_accumulation_steps=2
则参数更新次数=24/6=4
现在减少batch_size=6/2=3,参数更新次数不变=24/3/2=4
在梯度反向传播过程中,梯度每隔gradient_accumulation_steps更新一次。以前,像往常一样使用loss.backward()来计算梯度。
补充:pytorch学习笔记-optimizer.step()和scheduler.step()
optimizer.step()和scheduler.step()的区别
optimizer.step()通常用在每个mini-batch中,而scheduler.step()通常用在epoch中,但不是绝对的,可以根据具体需要来做。仅当使用optimizer.step()时,模型才会更新,scheduler.step()调整lr。
通常我们有
优化器 = optim.SGD(model.parameters(), lr = 0.01, 动量 = 0.9)
调度程序= lr_scheduler.StepLR(优化器,step_size = 100,gamma = 0.1)
model = net.train(模型、loss_function、优化器、调度器、num_epochs = 100)
scheduler中的step_size是指scheduler.step()每调用一次step_size,就会根据策略调整对应的学习率。
所以如果scheduler.step()放在mini-batch中,那么step_size指的是经过这么多次迭代后改变一次的学习率。
总结
以上就是pytorch中如何使用schedule的全部内容了。希望能给大家一个参考,也希望大家支持W3Cschool。
相关文章
- 11-28 强的新纪元:深度融合与改变我们的世界
- 11-28 智能家居行业趋势如何,趋势:引领行业标准化
- 11-28 笔记本市场前景展望:竞争格局、发展趋势与营销策略
- 11-27 5G手机性价比排行榜最新出炉!这些机型值得购买!
- 11-27 流媒体服务的优缺点,让你畅享视听盛宴
- 11-27 数码摄影摄像入门全攻略:从设备到后期,一篇文章教你
- 11-26 5G手机评测排名前十:让你拥有最快的网速!
- 11-26 最新5g手机评测排行榜前十名,手机评测排行榜前十名
- 11-26 电子书阅读器大比拼:谁是最亮的星?
- 11-25 无人机摄影:飞越天际,捕捉绝美瞬间
- 11-25 智能家居趋势如何描述,生活的潮流与变革
- 11-25 主流电子书阅读器评测,让你选出最适合自己的阅读利器
- 11-24 虚拟现实和增强现实:技术差异与未来融合
- 11-24 智能家居以后的趋势,未来已来,智能家居引领潮流
- 11-24 虚拟现实技术国家重点实验室,重点实验室:开启未来科
- 11-23 5G手机大对比:优缺点一览,让你选购无忧
- 11-23 掌握数码相机与摄影技巧,拍出绝美照片
- 11-23 笔记本电脑市场分析表格
- 11-22 数码相机技术美:捕捉精彩画面的奥秘
- 11-22 掌握数码相机与摄影技巧,拍出惊艳作品!
- 最近发表