目录

赛道一热身赛 - 基于 GCN 的 Cora 节点分类任务

本项目提供了基于 Jittor 框架和 Jittor-Geometric 库实现的图卷积网络(GCN)基线代码,用于完成 Cora 数据集上的节点分类任务。

项目结构与运行流程

代码文件 gcn.py 实现了完整的模型训练与预测流程,主要包含以下步骤:

  1. 数据读取与特征归一化:加载 data/cora.pkl,将特征及标签转为 Jittor 张量。对节点特征进行行归一化处理。
  2. 图的稀疏转换:通过 gcn_norm 进行无向图自环处理及对称归一化,并利用 cootocsccootocsr 算子转换为适合图卷积加速的稀疏格式。
  3. 模型定义:构建两层 GCNConv 结构的经典 GCN 神经网络,网络层间加入 ReLU 激活与 Dropout 层。
  4. 模型训练:使用 Adam 优化器进行参数更新,以交叉熵(Cross Entropy)作为损失函数。
  5. 模型验证:在每个 Epoch 评估训练集和验证集的分类准确率(Accuracy),保存最佳验证精度的模型状态。
  6. 预测保存:对测试集节点进行预测,将预测得到的类别存入 result.json 文件中。

使用说明

1. 配置环境

请确保安装了 Jittor 框架以及对应的 Jittor-Geometric 图神经网络库:

主要依赖项:

  • jittor
  • jittor_geometric
  • numpy

2. 数据集放置

请将数据集文件 cora.pkl 放置在项目根目录下的 data/ 目录中:

.
├── data/
│   └── cora.pkl
├── gcn.py
└── README.md

3. 运行训练与预测

运行以下命令启动训练:

python gcn.py

训练默认进行 200 个 Epoch。训练结束后,代码会自动评估测试集节点,并在根目录下输出 result.json


数据集说明

数据集文件 data/cora.pkl 为 pickle 格式,包含以下字段:

字段 类型 说明
x numpy array (2708, 1433) 节点特征矩阵
y numpy array (2708,) 节点标签(测试集标签为 -1)
edge_index numpy array (2, num_edges) 边列表(COO 格式)
train_mask numpy bool array (2708,) 训练集掩码
val_mask numpy bool array (2708,) 验证集掩码
test_mask numpy bool array (2708,) 测试集掩码
num_classes int 类别数(7)
num_features int 特征维度(1433)

模型主要超参数

gcn.py 中,采用的超参数配置如下(可根据实际调优需求进行调整):

  • 隐藏层维度 (hidden_dim): 256
  • 丢弃率 (dropout): 0.8
  • 学习率 (learning rate): 0.01
  • 权重衰减 (weight decay): 5e-4
  • 训练轮数 (epochs): 200

输出结果

模型预测完毕后,会在当前目录下生成 result.json 文件。文件格式为 JSON 字典,其中键为测试节点索引(字符串形式),值为对应的预测类别(整型)。示例如下:

{
  "1701": 3,
  "1702": 1,
  "1703": 0
}

实验总结

  • 模型结构: 两层 GCNConv,隐含层维度 256,Dropout 0.8。
  • 训练策略: Adam 优化器,学习率 0.01,训练 200 Epochs。
  • 性能表现: 验证集准确率稳定在 80%~81% 左右,达到赛题及格线(70%)
关于

Jittor 挑战赛热身赛开源代码,战队:DYA,实现基于 GCN 的节点分类。

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

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