You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pytorch Geometric超图卷积训练时索引越界错误如何解决?

问题根源

报错指向的是节点索引越界,原因是你所用的康奈尔Amazon Review超图数据集的节点ID采用1-based计数规则,而PyTorch张量的索引是0-based规则:节点总数为2268264时,合法的索引范围为0~2268263,但超边中存在值为2268264的节点ID,访问时直接超出张量维度边界。

修复方案

按以下步骤修改代码即可:

  1. 修正超边节点ID的计数规则
    读取超边时将所有节点ID减1,对齐0-based索引要求,修改以下代码段:
with open(folder + hyperedge_files) as f:
    for line in f.readlines():
        chunks = line.split(',')
        # 原代码:chunks = [int(i) for i in chunks]
        chunks = [int(i)-1 for i in chunks] # 新增减1操作,转换为0-based索引
        hyper_edge.append(chunks)
  1. 修正标签张量类型
    损失函数F.nll_loss要求输入的标签为torch.long类型,你当前使用的torch.int会触发后续类型报错,同步修改:
# 原代码:Y = torch.tensor(labels, dtype=torch.int)
Y = torch.tensor(labels, dtype=torch.long)
  1. (可选优化)你当前使用全0作为节点特征,会导致无偏置的卷积层无法学习到有效特征,可替换为全1常量特征:
x = np.ones((len(nodes), 2), dtype=np.float32)
X = torch.tensor(x, dtype=torch.float)

修改完成后重新运行即可正常训练。

内容的提问来源于stack exchange,提问作者Astra Uvarova - Saturn's star

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:27:01