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}
}