动态图如何动态调整学习率?
收藏
想要在动态图当中调整学习率(因为动态图是所见即所得,不知道有没有像这样的方法),看到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
收藏
请登录后评论
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
谢谢,不过这个文档我看过,但是这是固定的,衰减或者warmup策略都是给定的,没有办法自定义,不知道自定义如何实现。
另外,向请问一下这背后的机理,是在每一轮的更新中,优化器都会主动获得一个新的学习率吗?
with fluid.dygraph.guard():
optimizer = fluid.optimizer.SGD(
learning_rate=fluid.dygraph.PiecewiseDecay(boundaries, values, 0) )
额,之前可能没注意您的意思。如果需要比如先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。