前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytorch基础知识-学习率衰减(learning rate decay)

Pytorch基础知识-学习率衰减(learning rate decay)

作者头像
用户6719124
发布2019-11-17 21:51:09
8.3K0
发布2019-11-17 21:51:09
举报

学习率对整个函数模型的优化起着至关重要的作用。

如下图所示

上图的第一个图表明,若设置的learning rate较小,可能需要大量的计算时间才能将函数优化好。第二个图表明若设置的learning rate刚刚好,则比第一个图需要较少的时间就可完成优化。第三个图表明若设置的learning rate过大,则有可能造成整个函数loss忽大忽小,一直无法完成整个的优化。

由此看出选择合适的learning rate是很讲究技巧和偶然性的。但如果如下图所示,设置一个可以自动衰减的learning rate可能会在一定程度上加快优化。

学习率衰减(learning rate decay)对于函数的优化是十分有效的,如下图所示

loss的巨幅降低就是learning rate突然降低所造成的。

在进行深度学习时,若发现loss出现上图中情况时,一直不发生变化,不妨就设置一下学习率衰减(learning rate decay)。

具体到代码中

代码语言:javascript
复制
class torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10,
verbose=False, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-8)

# patience=10代表的是耐心值为10,
# 当loss出现10次不变化时,即开始调用learning rate decat功能
optimizer = torch.optim.SGD(model.parameters(),
                            args.lr,
                            momentum=args.momentum,
                            weight_decay=args.weight_decay)
scheduler = ReduceLROnPlateau(optimizer, 'min')
# min代表希望的目标减少的loss

scheduler.step(loss_val)
# 设置监听的是loss

另外也可以根据进行的epoch来设置learning rate decay

假设想

epoch进行小于20次时,learning rate 为0.05。

epoch进行到20次至40次时,learning rate 为0.005。

epoch进行到40次至60次时,learning rate 为0.0005。

...

则代码为

代码语言:javascript
复制
scheduler = StepLR(optimizer, step_size=20, gama=0.1)
# StepLR为步进,step_size=20表示没20个epoch,步进为原来的gama=0.1
for epoch in range(100):
    scheduler.step()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档