torch_geometric/data/collate.py TypeError: __inc__() takes 3 positional arguments but 4 were given

TypeError: inc() takes 3 positional arguments but 4 were given

在复现别人代码时程序报错:TypeError: __inc__() takes 3 positional arguments but 4 were given
Debug发现是site-pacakages/torch_geometric/data/collate.py/get_incs方法出了问题。


原因分析:

猜测是因为PYG版本的问题。

源代码推荐PYG版本为1.6,而我的PYG版本为2.0。
根据github确定为版本问题。当PYG>=2.0以后data.__inc__的参数发生变化。


解决方案:

两种解决方案

一、如果你能找到你代码中的__cat_dim__()(注意不是源文件的__cat_dim__()),你可以参考这篇文章PyG中自定义Data的注意事项(cat_dim

二、如果你代码中没有__cat_dim__(),你可以将你site-pacakages/torch_geometric/data/collate.py/get_incs(源文件)中def get_incs()方法按照如下方式修改。

def get_incs(key, values: List[Any], data_list: List[BaseData],
             stores: List[BaseStorage]) -> Tensor:
    repeats = [
        data.__inc__(key, value)
        for value, data, store in zip(values, data_list, stores)
    ]
    if isinstance(repeats[0], Tensor):
        repeats = torch.stack(repeats, dim=0)
    else:
        repeats = torch.tensor(repeats)
    return cumsum(repeats[:-1])

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值