【报错】TypeError: __init__() got multiple values for argument 'size'

问题解释:

假设有个函数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() 函数:
【报错】TypeError: __init__() got multiple values for argument 'size'_第1张图片
PaddlePaddle1.7中的Embedding() 函数:
【报错】TypeError: __init__() got multiple values for argument 'size'_第2张图片
参考:
[1] Stackflow

你可能感兴趣的:(飞桨PaddlePaddle,Python,paddlepaddle,python)