动态图中老是报参数名字已存在怎么解决
收藏
快速回复
AI Studio平台使用 问答其他 3004 15
动态图中老是报参数名字已存在怎么解决
收藏
快速回复
AI Studio平台使用 问答其他 3004 15

异常如下:

`ValueError: parameter name [weight] have be been used. In dygraph mode, the name of parameter can't be same.Please check the parameter attr value passed to self.create_parameter or constructor of dygraph Layers`

具体场景是这样的,我用ai studio提供的notebook跑动态图代码,第一遍正常,第二遍的时候就报参数名称已存在,虽然我也知道这是notebook存储之前的参数变量引起的,只需要重启再运行就可以了。但是重启代价太高了,尤其是前面已经写了很多代码,而我只是想测试这一个cell块中的代码的时候。

我尝试用del 删除之前定义过的变量,但是没有用,

有谁有没有什么好的方法可以仅重新运行一个cell块中的代码,而不需要重启整个项目。或者其他能解决上述异常的其他的办法?

0
收藏
回复
全部评论(15)
时间顺序
AIStudio810258
#2 回复于2021-01

我也遇过这问题,动态设定模型结构的cell不能重复执行

0
回复
昊东
#3 回复于2021-04

同问啊

0
回复
w
woshiheweigui
#4 回复于2021-07

大佬 请问解决了嘛 我也遇到相同的问题

0
回复
深渊上的坑
#5 回复于2021-07

重启notebook……

0
回复
FutureSI
#6 回复于2021-07

把那些权重和偏置的 name 属性去掉就可以了,一般套件里的模型都加上了这个属性

2
回复
s
sjyzzgbj
#7 回复于2021-08

楼上老哥说的对

不过我没敢直接去掉name属性(其实是因为属实看不懂代码),而是在用到name的时候都加上一个用str(int(time.time()))生成的随机字符串,避免了名字一样的问题

1
回复
s
sjyzzgbj
#8 回复于2021-08

今天要接着昨天的进度继续训练,结果无论如何optimizer加载不成功,报错

AssertionError: Optimizer set error, 1628870943_weights_moment1_0 should in state dict

其中的1608870943就是当前时间生成的随机字符串,这应该是我上述改动造成的

也就是说这种改动是一锤子买卖,只能保证第一次train成功进行,而保存的参数文件是不能再次加载成功的(因为基本不可能按着之前训练时通过时间得到的随机字符串逐个加载优化器参数),这是这种方法的弊端

0
回复
s
sjyzzgbj
#9 回复于2021-08
把那些权重和偏置的 name 属性去掉就可以了,一般套件里的模型都加上了这个属性

请问大佬能详细说说怎么去掉吗?

0
回复
s
sjyzzgbj
#10 回复于2021-08

解决了,只要把ParamAttr相关的行注释掉就行

0
回复
JavaRoom
#11 回复于2021-08

大佬在复现论文?

0
回复
JavaRoom
#12 回复于2021-08

大佬带带我,我连论文都没读懂,不会复现

0
回复
FutureSI
#13 回复于2021-08
sjyzzgbj #10
解决了,只要把ParamAttr相关的行注释掉就行

就是这样

0
回复
FutureSI
#14 回复于2021-08
JavaRoom #11
大佬在复现论文?

我只是出把子力气,这期100篇,我刚开始看一篇文章,结果人家就提交了,那才是大佬。当时我想看的是修补图像的那个生成模型

0
回复
s
sjyzzgbj
#15 回复于2021-08
sjyzzgbj #10
解决了,只要把ParamAttr相关的行注释掉就行

不过还有个问题,我发现将ParaAttr参数注释掉后,获得的优化器参数文件(.pdopt)不能再次载入继续训练,同时.pdparams不受影响

现在还在找解决办法,这是我提的issue

https://github.com/PaddlePaddle/PaddleClas/issues/1143

0
回复
JavaRoom
#16 回复于2021-08
FutureSI #14
我只是出把子力气,这期100篇,我刚开始看一篇文章,结果人家就提交了,那才是大佬。当时我想看的是修补图像的那个生成模型

大佬谦虚999

0
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户