基于PyTorch实现GAT和GCN在Cora,CiteSeer,PubMed三个引文数据集上以半监督学习方式进行节点分类任务,并对节点的嵌入表示进行降维可视化。在PPI数据集(多图)上训练GAT模型,表明GAT模型可用于归纳式学习。
| 环境 | 版本 |
|---|---|
| 系统 | Ubuntu 16.04.6 LTS |
| 深度学习框架 | PyTorch1.1.0 |
| CUDA | CUDA 10.0.130 |
| 几何深度学习库 | PyTorch-Geometric 1.2.0 |
| 编程语言 | Python3.7.3 |
| package | version |
|---|---|
| matplotlib | 3.0.3 |
| numpy | 1.16.2 |
| pandas | 0.24.2 |
| python | 3.7.3 |
| pytorch | 1.1.0 |
| scikit-learn | 0.21.0 |
| seaborn | 0.9.0 |
| texttable | 1.6.1 |
| torch-cluster | 1.3.0 |
| torch-geometric | 1.2.0 |
| torch-scatter | 1.2.0 |
| torch-sparse | 0.4.0 |
planetoid(包含三个引文网络数据集,Cora,CiteSeer,PubMed),PPI(蛋白质相互作用网络数据集)
| 格式 | 说明 |
|---|---|
model_name_dataset_name_result.csv |
节点预测结果 |
model_name_dataset_name_embedding.csv |
嵌入表示结果 |
model_name_dataset_name_accs.svg |
准确率变化图 |
model_name_dataset_name_model.pkl |
模型 |
model_name_dataset_name_embedding.svg |
嵌入降维可视化 |
| 格式 | 说明 |
|---|---|
| GAT_PPI_model.pkl | 模型 |
| GAT_PPI.svg | 训练过程变化图 |
| pred_*.csv | 节点预测结果 |
| real_*.csv | 节点真实结果 |
| embedding_*.csv | 嵌入表示结果 |
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| --dataset-folder | string | 数据集文件夹 | "./input/" |
| --result-path | string | 输出结果文件夹 | "./output/" |
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| GAT | string | GAT模型 | - |
| --dataset-name | string | 数据集名称 | "Cora" |
| --number-layers | int | 图网络层数 | 2 |
| --attention-out-channels | int | GAT层输出通道 | 8 |
| --multi-head | int | GAT多头 | 8 |
| --dropout | float | Dropout | 0.6 |
| --learning-rate | float | 学习率 | 0.005 |
| --weight-decay | float | 权重衰减 | 0.0005 |
| --epochs | int | 训练轮数 | 200 |
| --n-iter | int | t-SNE迭代次数 | 10000 |
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| GCN | string | GCN模型 | - |
| --dataset-name | string | 数据集名称 | "Cora" |
| --number-layers | int | 图网络层数 | 2 |
| --gcn-out-channels | int | 图网络层数 | 64 |
| --learning-rate | float | 学习率 | 0.01 |
| --weight-decay | float | 权重衰减 | 0.0005 |
| --epochs | int | 训练轮数 | 200 |
| --n-iter | int | t-SNE迭代次数 | 10000 |
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| GAT_PPI | string | PPI上的GAT模型 | - |
| --dataset-name | string | 数据集名称 | "PPI" |
| --number-layers | int | 神经网络层数 | 3 |
| --attention-out-channels | int | GAT层输出通道 | 256 |
| --multi-head | int | 多头注意 | 4 |
| --learning-rate | float | 学习率 | 0.005 |
| --epochs | int | 训练轮数 | 100 |
python src/main.py指定训练100轮
python src/main.py --epochs 100