Initial commit
本项目为计图比赛赛道一热身赛提交代码,基于 Jittor 和 JittorGeometric 实现两层图卷积网络(Graph Convolutional Network,GCN),用于完成 Cora 数据集上的半监督节点分类任务。
代码包含数据加载、特征归一化、图结构预处理、模型训练、验证集评测以及测试集预测。运行结束后会在项目根目录生成提交文件 result.json。
result.json
. ├── README.md ├── gcn.py ├── result.json └── data/ └── cora.pkl
各文件说明如下:
gcn.py
data/cora.pkl
安装 Jittor 和基础依赖:
python -m pip install --upgrade pip python -m pip install numpy jittor
安装 JittorGeometric:
git clone https://github.com/AlgRUC/JittorGeometric.git cd JittorGeometric python -m pip install . cd ..
将比赛提供的 cora.pkl 放入项目根目录下的 data/ 文件夹:
cora.pkl
data/
data/ └── cora.pkl
程序默认从以下路径读取数据:
cora.pkl 包含以下字段:
x
(2708, 1433)
y
(2708,)
-1
edge_index
(2, num_edges)
train_mask
val_mask
test_mask
num_classes
int
num_features
本项目采用两层 GCN,模型结构如下:
节点特征 ↓ GCNConv(1433, 256) ↓ ReLU ↓ Dropout(0.8) ↓ GCNConv(256, 7) ↓ 节点类别预测
主要处理流程如下:
5e-4
代码通过以下语句固定随机种子:
jt.misc.set_global_seed(42)
在项目根目录执行:
python gcn.py
程序每 20 轮输出一次训练集准确率和当前最佳验证集准确率:
Epoch: 020, Train Acc: 0.xxxx, Val Acc: 0.xxxx
训练完成后,程序会输出最佳验证集准确率。
训练、验证和测试集推理均集成在 gcn.py 中,执行以下命令即可完成全部流程:
验证集评价指标为分类准确率:
Accuracy = 预测正确的节点数 / 验证集节点总数
测试集没有公开标签。程序完成训练后,会对 test_mask 对应的节点进行预测,并生成 result.json。
本项目不依赖外部 checkpoint,预测结果由当前训练流程结束后的模型直接生成。
仓库中的 result.json 为本代码运行后生成的测试集预测结果,共包含 1000 个测试节点,预测类别范围为 0 至 6。
0
6
文件格式如下:
{ "1": 3, "2": 6, "6": 5 }
其中:
线上最终成绩以比赛评测平台对 result.json 的评测结果为准。
本项目使用以下开源框架:
GCN 卷积、图归一化以及稀疏图格式转换等功能由 JittorGeometric 提供。本项目未使用预训练模型或预训练权重。
计图挑战赛赛道一热身赛
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
赛道一热身赛:基于 GCN 的 Cora 节点分类
本项目为计图比赛赛道一热身赛提交代码,基于 Jittor 和 JittorGeometric 实现两层图卷积网络(Graph Convolutional Network,GCN),用于完成 Cora 数据集上的半监督节点分类任务。
代码包含数据加载、特征归一化、图结构预处理、模型训练、验证集评测以及测试集预测。运行结束后会在项目根目录生成提交文件
result.json。1. 项目结构
各文件说明如下:
gcn.py:GCN 模型、训练、验证和预测代码。result.json:测试集节点分类结果。data/cora.pkl:比赛提供的 Cora 数据文件,不包含在开源仓库中。2. 环境安装
2.1 环境要求
2.2 安装命令
安装 Jittor 和基础依赖:
安装 JittorGeometric:
3. 数据准备
将比赛提供的
cora.pkl放入项目根目录下的data/文件夹:程序默认从以下路径读取数据:
cora.pkl包含以下字段:x(2708, 1433)y(2708,)-1edge_index(2, num_edges)train_mask(2708,)val_mask(2708,)test_mask(2708,)num_classesintnum_featuresint4. 模型说明
本项目采用两层 GCN,模型结构如下:
主要处理流程如下:
5. 训练配置
5e-4代码通过以下语句固定随机种子:
6. 训练
在项目根目录执行:
程序每 20 轮输出一次训练集准确率和当前最佳验证集准确率:
训练完成后,程序会输出最佳验证集准确率。
7. 评测与推理
训练、验证和测试集推理均集成在
gcn.py中,执行以下命令即可完成全部流程:验证集评价指标为分类准确率:
测试集没有公开标签。程序完成训练后,会对
test_mask对应的节点进行预测,并生成result.json。本项目不依赖外部 checkpoint,预测结果由当前训练流程结束后的模型直接生成。
8. 结果说明
仓库中的
result.json为本代码运行后生成的测试集预测结果,共包含 1000 个测试节点,预测类别范围为0至6。文件格式如下:
其中:
线上最终成绩以比赛评测平台对
result.json的评测结果为准。9. 第三方依赖声明
本项目使用以下开源框架:
GCN 卷积、图归一化以及稀疏图格式转换等功能由 JittorGeometric 提供。本项目未使用预训练模型或预训练权重。