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

PyTorch Geometric中RandomLinkSplit切分后边数不符问题咨询

链接预测任务中Cora数据集边数拆分不符的原因解析

核心原因:无向边的存储与拆分逻辑差异

  1. Cora数据集的边存储特性
    原Cora数据集显示的10556条边是双向存储的有向边数——因为无向图会把每条无向边以(u,v)和(v,u)两种形式各存一次,实际唯一无向边的数量是10556 / 2 = 5278条。

  2. RandomLinkSplit的无向边拆分逻辑
    当设置is_undirected=True时,工具会以无向边为基本单位进行拆分,而非按有向边拆分:

    • 先对所有边去重,得到5278条唯一无向边
    • 按num_val=0.05、num_test=0.1的比例拆分无向边:
      • 验证集预测目标:5278 × 0.05 ≈ 263条无向边 → 对应双向存储的526条有向边(即val_data.edge_label的数量)
      • 测试集预测目标:5278 × 0.1 ≈ 527条无向边 → 对应双向存储的1054条有向边(即test_data.edge_label的数量)
      • 训练集预测目标:5278 - 263 - 527 = 4488条无向边 → 由于设置了add_negative_train_samples=False,训练集仅保留无向边的单方向存储,因此train_data.edge_label的数量等于无向边数4488
  3. 各数据集edge_index的含义

    • train_data.edge_index是训练图的结构边,即原无向边中去掉验证、测试预测边后的剩余部分:4488条无向边 ×2 = 8976条有向边,与数据显示一致
    • val_data.edge_index复用训练图的结构边(验证时基于训练图做预测),因此同样是8976条
    • test_data.edge_index是训练图+验证预测边的结构边:(4488+263)条无向边 ×2 = 9502条有向边,与数据显示一致

边数核对验证

所有预测目标的无向边总数为4488+263+527=5278,对应双向有向边总数为5278×2=10556,与原数据集边数完全匹配。你之前的计算是把单方向存储的训练集预测边和双向存储的验证/测试预测边直接相加,才出现了数值不符的情况。

内容的提问来源于stack exchange,提问作者lenhhoxung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 07:54:56