Paddle 如何实现网络中不同层可以动态地设置不同的学习率?

t5zmwmid  于 2021-11-30  发布在  Java
关注(0)|答案(4)|浏览(548)

我们想将pytorch的实现转化为paddle。想要实现的效果是在训练过程中,网络(ResNet-50)的FC层和之前的卷积层分开设置不同的学习率,并且用cosine annealing的schedule动态调节。相关pytorch的代码如下

其中133行和134行所用的optimizer的信息如下:

请问paddle中有哪个方法可以实现这个目标?谢谢!

环境信息:
paddlepaddle-gpu 1.8.1.post107
cudnn 7.6.5
python 3.7.5

Driver Version: 440.44
CUDA Version: 10.2

igsr9ssn

igsr9ssn1#

https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/fluid_cn/ParamAttr_cn.html#paramattr
可以通过learning_rate设置单个ParamAttr的学习率的比例

nwnhqdif

nwnhqdif2#

已尝试使用ParamAttr设置单层learning_rate的值,但这个方法要求 learning_rate的赋值必须是一个 float。如下面的报错信息所示:

TypeError: The type of 'learning_rate' in ParamAttr must be (<class 'float'>, <class 'int'>), but received <class 'paddle.fluid.framework.Variable'>.

期望是将网络其中一层结构设置成cosine_decay这样的随着网络训练动态变化的学习率。请问有什么建议吗?

fdx2calv

fdx2calv3#

呃,这个目前还无法实现~

up9lanfz

up9lanfz4#

谢谢回答,希望以后的版本中可以添加这样的功能

相关问题