PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
21.8k stars 5.47k forks source link

ParamAttr的参数learning_rate取值非1时,paddle是否会为learning_rate创建一个变量,如何给这个变量指定名字? #64351

Open spantarXP opened 1 month ago

spantarXP commented 1 month ago

请提出你的问题 Please ask your question

在正常能运行的paddle环境下(该环境下,所有参数的ParamAttr设置的learning_rate=1.0),需要对不同的参数设置不同的学习率,所以通过调整ParamAttr实现这一目标,发现只要将ParamAttr的learning_rate设置成非1的值,就会报错: image 从报错怀疑paddle给非1.0的learning_rate生成了一个variable 且命名为tmp_1,与之前重复,造成失败。

想知道paddle 对ParamAttr的参数learning_rate的处理是怎样的,怎么指定变量名?

zyfncg commented 1 month ago
image

从develop分支的源码找到了对应的逻辑,看上去tmp_1是global learning rate和参数learning rate乘积对应的Tensor,命名重复估计是这里创建变量名的规则有些问题。

从代码路径看使用的paddle版本不是最新的,可以试试用最新paddle版本看能否运行