# MyGNN **Repository Path**: singularity0104/my-gnn ## Basic Information - **Project Name**: MyGNN - **Description**: 主流图神经网络模型在分类任务上的实现、比较与改进 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2022-01-07 - **Last Updated**: 2024-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: 图神经网络, GNN ## README # 主流图神经网络模型在分类任务上的实现、比较与改进 > 开源地址:https://gitee.com/singularity0104/my-gnn ### 课题介绍 + 近年来神经网络应用广泛,对于图像、语音等结构化数据的处理有了很大突破,但却很难处理非结构化的图数据。现实中许多数据都是非结构化的图数据,比如社交网络、引文网络等,因此神经网络在图数据上的拓展成为新的研究热点,图神经网络应运而生。图神经网络主要用于对节点信息、边信息、全局信息的聚合表示,进一步进行分类等任务。 + 本课题利用PyTorch实现了轻量化的GCN、GAT、GIN网络模型,并在cora、citeseer数据集上完成了性能测试与调优。针对GCN模型,分析GCN模型结构,简化GCN模型架构,提出了更加简单灵活的GCN-sub模型,实验证明模型效果与GCN相近。针对GAT模型,提出GAT-plus模型,改进了代码实现中的运算逻辑,使前向传播的运算更加高效。 ### 实验环境 + 实验语言要求Python3.x版本 + 实验包环境由`request.txt`文件给出 ``` numpy==1.18.5 pandas==1.1.5 torch==1.10.1 ``` ### 数据集下载 + 项目文件夹中`dataset/`子文件夹下给出了示例所用的数据集,或者可以通过以下链接下载: + Cora:https://linqs-data.soe.ucsc.edu/public/lbc/cora.tgz + Citeseer:https://linqs-data.soe.ucsc.edu/public/lbc/citeseer.tgz ### 文件解读 + 项目文件树 ``` . ├── config │ ├── README.txt │ └── template.ini ├── dataset │ ├── citeseer/ │ └── cora/ ├── main.py ├── models │ ├── gat_plus.py │ ├── gat.py │ ├── gcn.py │ ├── gcn_sub.py │ └── gin.py ├── README.md ├── requirements.txt ├── train.py └── utils.py ``` + 重点文件及文件夹解读 + `config/`存放默认配置文件`template.ini`以及解释文档README.txt,配置文件定义一个或多个模型训练的所有配置,示例`template.ini`给出了GCN、GIN、GAT等模型的默认配置,具体含义请参考解释文档`README.txt` + `dataset/`存放课题使用数据集,分别是Cora和Citeseer数据集 + models中存放图神经网络模型的定义 + `gcn.py`定义图卷积神经网络GCN模型 + `gat.py`定义图注意力神经网络GAT模型 + `gin.py`定义图同构神经网络GIN模型 + `gcn_sub.py`定义简化型图卷积神经网络GCN-sub模型 + `gat_plus.py`定义改进型图注意力神经网络GAT-plus模型 + `main.py`为项目主程序 + `train.py`定义模型训练函数 + `util.py`定义一些相关工具函数 ### 运行方式 + 进入项目文件夹 ```shell cd MyGNN ``` + 安装依赖环境 ```shell pip install -r requirements.txt ``` + 执行默认配置文件 ```shell python main.py ``` + 执行自定义配置文件 ``` python main.py --config filename ``` ### 实验结果 + 控制台输出:运行后程序首先输出模型配置信息,之后会输出训练中每一个epoch的训练集损失函数、训练集准确率、验证集损失函数、验证集准确率、训练时间,以及训练完成后输出总训练时间和测试集情况 + log文件:如果在配置文件中将`log`选项设置为`True`,那么会将控制台输出信息进一步写入文件中,位于`log/modelname/config.txt`、`log/modelname/train.txt`和`log/modelname/test.txt`中 + 图神经网络效果总览 | | Cora | Citeseer | | ---- | ------------------------- | -------------------- | | GCN | gcn_2_64 (0.8373) | gcn_2_64 (0.6692) | | GAT | gat_2_64 (0.7967) | gat_2_64 (0.6299) | | GIN | gin_cora_2_2_64 (0.8207) | gin_2_2_64 (0.6329) |