ADD file via upload
本仓库为第六届“计图”人工智能算法挑战赛赛道一热身赛一的开源代码。任务是在 Cora 引文网络数据集上使用 Jittor 和 JittorGeometric 训练 GCN(Graph Convolutional Network)模型,并对测试集论文节点进行主题分类。作者李同轩,学号25120324,来自北京交通大学计算机科学与技术学院计算机科学与技术专业研一。
建议使用 conda 创建独立环境:
conda create -n gcn python=3.11 -y conda activate gcn pip install -r requirements.txt
如果 Jittor 在 CUDA/cuDNN 初始化阶段报错,可使用 Jittor 官方安装器安装兼容 CUDA 缓存:
python -m jittor_utils.install_cuda
本项目不依赖本机绝对路径。训练脚本默认从当前目录读取 data/cora.pkl。
data/cora.pkl
比赛官方提供数据文件 data/cora.pkl。目录结构如下:
. ├── data/ │ └── cora.pkl ├── gcn.py ├── README.md └── requirements.txt
data/cora.pkl 包含以下字段:
x
(2708, 1433)
y
(2708,)
-1
edge_index
(2, num_edges)
train_mask
val_mask
test_mask
num_classes
num_features
数据划分:
开源仓库中不建议提交原始数据文件;如需复现,请将官方提供的 cora.pkl 放到 data/ 目录下。
cora.pkl
data/
运行以下命令即可完成训练:
python gcn.py
训练配置在 gcn.py 中集中设置:
gcn.py
代码中使用 jt.misc.set_global_seed(42) 固定随机种子。模型会根据验证集准确率保存最优参数,并使用最优参数生成最终预测。
jt.misc.set_global_seed(42)
本热身赛的训练和推理在同一入口脚本中完成:
脚本执行流程:
gcn_norm
result.json
输出文件格式:
{ "1": 3, "2": 6, "6": 5 }
其中 key 为测试集节点编号字符串,value 为预测类别整数,类别范围为 0-6。
0-6
评测指标为 Accuracy:
Accuracy = 预测正确的测试节点数 / 测试节点总数
本地验证集最优结果:
Val Acc: 0.8080
result.json 共包含 1000 个测试节点预测。线上成绩由比赛平台使用隐藏测试标签计算,可能与本地验证集准确率存在差异,原因是本地只能使用验证集标签评估,测试集标签在数据中被置为 -1。
模型采用两层 GCN:
GCNConv(num_features, 256) -> ReLU -> Dropout -> GCNConv(256, num_classes)
训练损失为交叉熵损失:
loss = cross_entropy(logits[train_mask], y[train_mask])
优化器为 Adam,权重衰减为 5e-4。
5e-4
重新生成预测文件:
重新生成提交压缩包:
zip -j result.zip gcn.py result.json
检查压缩包内容:
unzip -l result.zip
压缩包应只包含:
result.zip ├── gcn.py └── result.json
snake_case
GCNNet
PascalCase
.gitignore
GCNConv
本项目代码基于比赛官方热身赛模板补全,用于计图挑战赛学习与提交。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
计图挑战赛赛道一热身赛一:基于引用网络的论文分类
本仓库为第六届“计图”人工智能算法挑战赛赛道一热身赛一的开源代码。任务是在 Cora 引文网络数据集上使用 Jittor 和 JittorGeometric 训练 GCN(Graph Convolutional Network)模型,并对测试集论文节点进行主题分类。作者李同轩,学号25120324,来自北京交通大学计算机科学与技术学院计算机科学与技术专业研一。
1. 环境安装
1.1 运行环境
1.2 安装命令
建议使用 conda 创建独立环境:
如果 Jittor 在 CUDA/cuDNN 初始化阶段报错,可使用 Jittor 官方安装器安装兼容 CUDA 缓存:
本项目不依赖本机绝对路径。训练脚本默认从当前目录读取
data/cora.pkl。2. 数据准备
比赛官方提供数据文件
data/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_classesnum_features数据划分:
开源仓库中不建议提交原始数据文件;如需复现,请将官方提供的
cora.pkl放到data/目录下。3. 训练
运行以下命令即可完成训练:
训练配置在
gcn.py中集中设置:代码中使用
jt.misc.set_global_seed(42)固定随机种子。模型会根据验证集准确率保存最优参数,并使用最优参数生成最终预测。4. 评测/推理
本热身赛的训练和推理在同一入口脚本中完成:
脚本执行流程:
data/cora.pkl。gcn_norm对图结构归一化并添加自环。result.json。输出文件格式:
其中 key 为测试集节点编号字符串,value 为预测类别整数,类别范围为
0-6。5. 结果说明
评测指标为 Accuracy:
本地验证集最优结果:
result.json共包含 1000 个测试节点预测。线上成绩由比赛平台使用隐藏测试标签计算,可能与本地验证集准确率存在差异,原因是本地只能使用验证集标签评估,测试集标签在数据中被置为-1。6. 模型方法
模型采用两层 GCN:
训练损失为交叉熵损失:
优化器为 Adam,权重衰减为
5e-4。7. 复现与提交
重新生成预测文件:
重新生成提交压缩包:
检查压缩包内容:
压缩包应只包含:
8. 代码规范说明
snake_case。GCNNet使用PascalCase。.gitignore默认忽略日志、缓存、模型权重、数据大文件和输出目录。9. 第三方引用与声明
GCNConv。本项目代码基于比赛官方热身赛模板补全,用于计图挑战赛学习与提交。