bottleneck
1.0.0
这是本文的官方实施:关于图形神经网络的瓶颈及其实际含义(ICLR'2021),它引入了GNN的过度问题。
乌里·阿隆(Uri Alon)和埃兰·雅哈夫(Eran Yahav)。另请参见[视频],[海报]和[幻灯片]。
该存储库分为三个子项目:
tf-gnn-samples
是https://github.com/microsoft/tf-gnn-samples的克隆(ICML'2020)。该项目可用于复制论文第4.2和4.2节的QM9和Varmisuse实验。该子项目取决于Tensorflow 1.13。我们的克隆的说明与其原始代码相同,只是可以通过运行脚本tf-gnn-samples/run_qm9_benchs_fa.py
或tf-gnn-samples/run_varmisuse_benchs_fa.py
而不是原始脚本。有关其他依赖项和说明,请参阅其原始读数:https://github.com/microsoft/tf-gnn-samples/blob/master/master/readme.md。我们执行的主要修改是将完全贴上的层用作最后一个GNN层,我们在论文中描述了。gnn-comparison
是Errica等人的https://github.com/diningphil/gnn-compareison的克隆。 (ICL'2020)。该项目可用于复制生物学实验(第4.3节,酶和NCI1数据集)。该子项目取决于Pytorch 1.4和Pytorch-几何。有关其他依赖项和说明,请参阅其原始读数:https://github.com/diningphil/gnn-comparison/blob/master/master/readme.md。我们的克隆的说明是相同的,除了我们为每个config_*.yml
文件添加了一个附加标志,称为last_layer_fa
,默认情况下设置为True
,并重现我们的实验。我们执行的主要修改是使用完全贴上的层作为最后一个GNN层。该项目旨在在实验新的GNN体系结构和新解决方案方面用于过度使用问题。
随时在任何问题上打开一个问题。
该项目基于Pytorch 1.4.0和Pytorch几何库。
pip install -r requirements.txt
requirements.txt
文件列出了其他要求。但是,Pytorch几何可能需要手动安装,因此我们建议仅此后使用requirements.txt
文件。
验证导入依赖关系是否没有错误:
python -c 'import torch; import torch_geometric'
在大树上进行训练(深度= 8)可能需要约60GB的RAM和约10GB的GPU内存。通过使用较小的批次大小和使用--accum_grad
标志,可以妥协GPU内存。
例如,而不是运行:
python main.py --batch_size 1024 --type GGNN
以下使用梯度积累,并且花费的GPU内存较少:
python main.py --batch_size 512 --accum_grad 2 --type GGNN
要从纸上运行一个实验,请运行:
python main.py --help
并查看可用标志。例如,要训练深度= 4的GGNN,运行:
python main.py --task DICTIONARY --eval_every 1000 --depth 4 --num_layers 5 --batch_size 1024 --type GGNN
要在所有深度上训练GNN,请运行以下一个:
python run-gcn-2-8.py
python run-gat-2-8.py
python run-ggnn-2-8.py
python run-gin-2-8.py
运行上述脚本的结果是(论文中的第4.1节):
R: | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
GGNN | 1.0 | 1.0 | 1.0 | 0.60 | 0.38 | 0.21 | 0.16 |
GAT | 1.0 | 1.0 | 1.0 | 0.41 | 0.21 | 0.15 | 0.11 |
杜松子酒 | 1.0 | 1.0 | 0.77 | 0.29 | 0.20 | ||
GCN | 1.0 | 1.0 | 0.70 | 0.19 | 0.14 | 0.09 | 0.08 |
尝试其他GNN类型:
GNN_TYPE
枚举中,例如: MY_NEW_TYPE = auto()
elif self is GNN_TYPE.MY_NEW_TYPE:
在此处实例化新的GNN类型对象main.py
文件的标志: python main.py --type MY_NEW_TYPE ...
如果您想引用这项工作,请使用此Bibtex条目:
@inproceedings{
alon2021on,
title={On the Bottleneck of Graph Neural Networks and its Practical Implications},
author={Uri Alon and Eran Yahav},
booktitle={International Conference on Learning Representations},
year={2021},
url={https://openreview.net/forum?id=i80OPhOCVH2}
}