Merge branch ‘main’ into gitlink-master
第六届计图人工智能挑战赛热身赛一:基于引用网络的论文分类任务。
本项目使用计图(Jittor)实现两层 GCN,在 Cora 引用网络数据集上进行节点分类,并生成比赛提交所需的预测文件。
推荐使用 Docker 运行,避免不同电脑上的 Python、编译器、Jittor 版本差异。
3.7
jittor/jittor
拉取镜像:
docker pull jittor/jittor
本项目不依赖 JittorGeometric,GCN 的图卷积通过 Jittor 矩阵乘法实现。
JittorGeometric
开源仓库不提交比赛原始数据。请从计图挑战赛热身赛一页面下载数据文件,并放置为:
data/cora.pkl
目录示例:
. ├── configs/ │ └── cora_gcn.json ├── data/ │ ├── README.md │ └── cora.pkl ├── gcn.py ├── Dockerfile ├── LICENSE └── README.md
如果 data/cora.pkl 缺失,程序会报错并提示需要把数据文件放到 data/ 目录下。
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 中配置,包括:
configs/cora_gcn.json
epochs
hidden_dim
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,运行:
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 使用常见的归一化邻接矩阵:
edge_index
A_hat = D^(-1/2) A D^(-1/2)
每层图卷积执行:
H_next = A_hat H W
其中 A_hat H 表示按图结构聚合邻居节点信息,W 是可训练的线性变换参数。换句话说,GCN 的核心思想是:一个节点的分类不只看自己,还要看它在引用网络里的邻居。
A_hat H
W
本地复现结果:
Final Best Val Acc: 0.8060 Saved result.json with 1000 test nodes.
指标说明:
Best Val Acc
热身赛线上排名:60。
线上排名与本地验证集准确率可能不完全一致,因为线上排名使用的是测试集评测结果,而本地可见的是验证集结果。
42
outputs/
config.json
command.txt
result.zip
本仓库代码基于计图框架实现,未使用预训练模型,未引用第三方比赛代码。运行 gcn.py 可以从比赛数据生成提交结果,用于复现热身赛提交。
gcn.py
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
jittor-yedi-cora-gcn
第六届计图人工智能挑战赛热身赛一:基于引用网络的论文分类任务。
本项目使用计图(Jittor)实现两层 GCN,在 Cora 引用网络数据集上进行节点分类,并生成比赛提交所需的预测文件。
队伍信息
环境安装
推荐使用 Docker 运行,避免不同电脑上的 Python、编译器、Jittor 版本差异。
3.7(由镜像提供)jittor/jittor拉取镜像:
本项目不依赖
JittorGeometric,GCN 的图卷积通过 Jittor 矩阵乘法实现。数据准备
开源仓库不提交比赛原始数据。请从计图挑战赛热身赛一页面下载数据文件,并放置为:
目录示例:
如果
data/cora.pkl缺失,程序会报错并提示需要把数据文件放到data/目录下。训练
Windows PowerShell:
Linux 或 macOS:
关键参数在
configs/cora_gcn.json中配置,包括:epochs:训练轮数hidden_dim:隐藏层维度dropout:dropout 比例lr:学习率weight_decay:权重衰减seed:随机种子data_root:数据目录output_path:预测结果输出路径命令行参数优先级高于配置文件,例如:
评测/推理
本热身赛代码在训练后直接对测试节点生成预测结果。默认输出为:
如需生成平台提交用的根目录
result.json,运行:然后打包:
方法说明
本项目实现的是两层 GCN。
首先对节点特征做行归一化。然后根据
edge_index构建无向邻接矩阵,并加入自环。GCN 使用常见的归一化邻接矩阵:每层图卷积执行:
其中
A_hat H表示按图结构聚合邻居节点信息,W是可训练的线性变换参数。换句话说,GCN 的核心思想是:一个节点的分类不只看自己,还要看它在引用网络里的邻居。结果说明
本地复现结果:
指标说明:
Best Val Acc:验证集节点分类准确率。result.json:测试集节点预测类别,用于线上提交。热身赛线上排名:60。
线上排名与本地验证集准确率可能不完全一致,因为线上排名使用的是测试集评测结果,而本地可见的是验证集结果。
可复现说明
seed统一设置,默认值为42。outputs/下保存实际配置config.json和运行命令command.txt。outputs/、result.json、result.zip和原始数据文件默认不提交到 Git 仓库。开源说明
本仓库代码基于计图框架实现,未使用预训练模型,未引用第三方比赛代码。运行
gcn.py可以从比赛数据生成提交结果,用于复现热身赛提交。