首页 Paddle框架 帖子详情
动态图如何动态调整学习率?
收藏
快速回复
Paddle框架 问答深度学习模型训练炼丹技巧 2054 3
动态图如何动态调整学习率?
收藏
快速回复
Paddle框架 问答深度学习模型训练炼丹技巧 2054 3

想要在动态图当中调整学习率(因为动态图是所见即所得,不知道有没有像这样的方法),看到paddle提供了几种调整策略,比如这样使用

sgd_optimizer = fluid.optimizer.SGD(
    learning_rate=fluid.layers.exponential_decay(
        learning_rate=base_lr,
        decay_steps=10000,
        decay_rate=0.5,
        staircase=True))

但是这些都是固定的策略,如果我想自己写比如先warm_up再cosine decay这样的学习率变化策略,应该怎样实现?

在pytorch 当中有

opt.param_groups[0]['lr'] = args.lr * ratio

这样的方式可以显式地动态调整学习率

paddle源码当中好像是返回了一个新的学习率值,但是优化器是不是受影响了呢?

请问在paddle里面不同的优化器是否有这样的属性或者方法可以调整?

0
收藏
回复
全部评论(3)
时间顺序
HolliZhao
#2 回复于2020-04

paddle 1.7 API:

PiecewiseDecay(),该接口提供对初始学习率进行分段(piecewise)常数衰减的功能。

PolynomialDecay(),该接口提供学习率按多项式衰减的功能。

相关文档:

https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/dygraph_cn/PiecewiseDecay_cn.html

https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/dygraph_cn/PolynomialDecay_cn.html

0
回复
Frank_academic
#3 回复于2020-04

谢谢,不过这个文档我看过,但是这是固定的,衰减或者warmup策略都是给定的,没有办法自定义,不知道自定义如何实现。

另外,向请问一下这背后的机理,是在每一轮的更新中,优化器都会主动获得一个新的学习率吗?

with fluid.dygraph.guard():
optimizer = fluid.optimizer.SGD(
learning_rate=fluid.dygraph.PiecewiseDecay(boundaries, values, 0) )

0
回复
HolliZhao
#4 回复于2020-04

额,之前可能没注意您的意思。如果需要比如先warm_up再cosine decay这样的形式,目前是需要自己写代码实现了。学习率learning_rate是根据对应的学习率调度器https://www.paddlepaddle.org.cn/documentation/docs/zh/api_guides/low_level/layers/learning_rate_scheduler.html 进行自动变化的。也就是优化器在每个step都可能是不同的学习率learning_rate。

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户