【报错】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() 函数:
在这里插入图片描述
PaddlePaddle1.7中的Embedding() 函数:
在这里插入图片描述
参考:
[1] Stackflow

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值