问题解释:
假设有个函数A(age=1),但是我调用这个函数A(3, age=5),此时我们会同时把3和5同时赋值给函数中的age,此时就会出现age得到了多个值这个错误。
你要做的是回去检查你要调用的函数里面的参数情况,和你记忆里的是不是一致。
因为很多时候有些库更新了版本,会修改一些方法里的参数,在你调用的时候不知道,就有可能会出现这个错误。
个人遇到的具体问题:
#报错位置
self.embedding = Embedding(
self.full_name(),
size=[vocab_size,hidden_size],
dtype='float32',
is_sparse=False,
param_attr=fluid.ParamAttr(
name='embedding_para', initializer=fluid.initializer.UniformInitializer(low=-init_scale, high=init_scale)))
说明:这个错误是因为在Embedding() 这个原本的函数中,并没有self.full_name() 这个参数,因此我在这个调用中会把self.full_name() 和size=[vocab_size,hidden_size] 同时赋值给Embedding 函数的第一个参数size=,所以产生的重复赋值这个报错信息。
我查看了Embedding() 这个函数的源码,发现在PaddlePaddle1.6中,size() 前面原本有一个参数,但是在PaddlePaddle1.7中,这个参数就没有了,但我使用的还是1.6的调用方法,因此就会出现上述将两个值都赋给了同一个参数的错误。
PaddlePaddle1.6中的Embedding() 函数:
PaddlePaddle1.7中的Embedding() 函数:
参考:
[1] Stackflow