目录

jittor-yedi-cora-gcn

第六届计图人工智能挑战赛热身赛一:基于引用网络的论文分类任务。

本项目使用计图(Jittor)实现两层 GCN,在 Cora 引用网络数据集上进行节点分类,并生成比赛提交所需的预测文件。

队伍信息

  • 战队名:yedi
  • 项目名:cora-gcn
  • 仓库名:jittor-yedi-cora-gcn
  • 赛题:热身赛一,基于引用网络的论文分类任务

环境安装

推荐使用 Docker 运行,避免不同电脑上的 Python、编译器、Jittor 版本差异。

  • Docker
  • Python:3.7(由镜像提供)
  • 深度学习框架:Jittor
  • Docker 镜像:jittor/jittor

拉取镜像:

docker pull jittor/jittor

本项目不依赖 JittorGeometric,GCN 的图卷积通过 Jittor 矩阵乘法实现。

数据准备

开源仓库不提交比赛原始数据。请从计图挑战赛热身赛一页面下载数据文件,并放置为:

data/cora.pkl

目录示例:

.
├── configs/
│   └── cora_gcn.json
├── data/
│   ├── README.md
│   └── cora.pkl
├── gcn.py
├── Dockerfile
├── LICENSE
└── README.md

如果 data/cora.pkl 缺失,程序会报错并提示需要把数据文件放到 data/ 目录下。

训练

Windows PowerShell:

docker run --rm -v "${PWD}:/workspace" -w /workspace jittor/jittor python3.7 gcn.py --config configs/cora_gcn.json

Linux 或 macOS:

docker run --rm -v "$PWD:/workspace" -w /workspace jittor/jittor python3.7 gcn.py --config configs/cora_gcn.json

关键参数在 configs/cora_gcn.json 中配置,包括:

  • epochs:训练轮数
  • hidden_dim:隐藏层维度
  • dropout:dropout 比例
  • lr:学习率
  • weight_decay:权重衰减
  • seed:随机种子
  • data_root:数据目录
  • output_path:预测结果输出路径

命令行参数优先级高于配置文件,例如:

docker run --rm -v "${PWD}:/workspace" -w /workspace jittor/jittor python3.7 gcn.py --config configs/cora_gcn.json --seed 42 --epochs 500

评测/推理

本热身赛代码在训练后直接对测试节点生成预测结果。默认输出为:

outputs/result.json

如需生成平台提交用的根目录 result.json,运行:

docker run --rm -v "${PWD}:/workspace" -w /workspace jittor/jittor python3.7 gcn.py --config configs/cora_gcn.json --output result.json

然后打包:

Compress-Archive -LiteralPath gcn.py,result.json -DestinationPath result.zip -Force

方法说明

本项目实现的是两层 GCN。

首先对节点特征做行归一化。然后根据 edge_index 构建无向邻接矩阵,并加入自环。GCN 使用常见的归一化邻接矩阵:

A_hat = D^(-1/2) A D^(-1/2)

每层图卷积执行:

H_next = A_hat H W

其中 A_hat H 表示按图结构聚合邻居节点信息,W 是可训练的线性变换参数。换句话说,GCN 的核心思想是:一个节点的分类不只看自己,还要看它在引用网络里的邻居。

结果说明

本地复现结果:

Final Best Val Acc: 0.8060
Saved result.json with 1000 test nodes.

指标说明:

  • Best Val Acc:验证集节点分类准确率。
  • result.json:测试集节点预测类别,用于线上提交。

热身赛线上排名:60。

线上排名与本地验证集准确率可能不完全一致,因为线上排名使用的是测试集评测结果,而本地可见的是验证集结果。

可复现说明

  • 随机种子由 seed 统一设置,默认值为 42
  • 每次运行会在 outputs/ 下保存实际配置 config.json 和运行命令 command.txt
  • outputs/result.jsonresult.zip 和原始数据文件默认不提交到 Git 仓库。

开源说明

本仓库代码基于计图框架实现,未使用预训练模型,未引用第三方比赛代码。运行 gcn.py 可以从比赛数据生成提交结果,用于复现热身赛提交。

关于
343.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号