动态图如何动态调整学习率?
Frank_academic 发布于2020-04-19 14:37 浏览:374 回复:3
0
收藏

想要在动态图当中调整学习率(因为动态图是所见即所得,不知道有没有像这样的方法),看到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条回复 最后由xiaohongyd回复于2020-04-20 16:45
#4xiaohongyd回复于2020-04-20 16:45:14

额,之前可能没注意您的意思。如果需要比如先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
#3Frank_academic回复于2020-04-20 14:34:46

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

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

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

0
#2xiaohongyd回复于2020-04-19 20:15:23

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
TOP
切换版块