Ini adalah implementasi resmi dari makalah ini: pada hambatan jaringan saraf grafik dan implikasi praktisnya (ICLR'2021), yang memperkenalkan masalah GNNs yang berlebihan .
Oleh Uri Alon dan Eran Yahav. Lihat juga [video], [poster] dan [slide].
Repositori ini dibagi menjadi tiga sub-proyek:
tf-gnn-samples
adalah klon https://github.com/microsoft/tf-gnn-samples oleh Brockschmidt (ICML'2020). Proyek ini dapat digunakan untuk mereproduksi eksperimen QM9 dan Varmisuse dari Bagian 4.2 dan 4.2 di koran. Sub-proyek ini tergantung pada TensorFlow 1.13. Instruksi untuk klon kami sama dengan kode aslinya, kecuali yang mereproduksi eksperimen kami (Dataset QM9 dan Varmisuse) dapat dilakukan dengan menjalankan skrip tf-gnn-samples/run_qm9_benchs_fa.py
atau tf-gnn-samples/run_varmisuse_benchs_fa.py
bukan skrip aslinya. Untuk dependensi dan instruksi tambahan, lihat readme aslinya: https://github.com/microsoft/tf-gnn-samples/blob/master/readme.md. Modifikasi utama yang kami lakukan adalah menggunakan lapisan yang sepenuhnya berdekatan sebagai lapisan GNN terakhir dan kami jelaskan dalam makalah kami.gnn-comparison
adalah klon https://github.com/diningphil/gnn-comparison oleh Errica et al. (Iclr'2020). Proyek ini dapat digunakan untuk mereproduksi eksperimen biologis (Bagian 4.3, kumpulan data enzim dan NCI1). Sub-proyek ini tergantung pada Pytorch 1.4 dan pytorch-geometrik. Untuk dependensi dan instruksi tambahan, lihat readme aslinya: https://github.com/diningphil/gnn-comparison/blob/master/readme.md. Instruksi untuk klon kami sama, kecuali bahwa kami menambahkan bendera tambahan untuk setiap config_*.yml
, yang disebut last_layer_fa
, yang diatur ke True
secara default, dan mereproduksi eksperimen kami. Modifikasi utama yang kami lakukan adalah menggunakan lapisan yang sepenuhnya berdekatan sebagai lapisan GNN terakhir.Proyek ini dirancang untuk berguna dalam bereksperimen dengan arsitektur GNN baru dan solusi baru untuk masalah yang berlebihan.
Jangan ragu untuk membuka masalah dengan pertanyaan apa pun.
Proyek ini didasarkan pada Pytorch 1.4.0 dan Perpustakaan Geometris Pytorch.
pip install -r requirements.txt
File requirements.txt
mencantumkan persyaratan tambahan. Namun, geometris Pytorch mungkin memerlukan instalasi manual, dan dengan demikian kami merekomendasikan untuk menggunakan file requirements.txt
hanya sesudahnya.
Verifikasi bahwa mengimpor dependensi berjalan tanpa kesalahan:
python -c 'import torch; import torch_geometric'
Pelatihan pada pohon besar (kedalaman = 8) mungkin memerlukan ~ 60GB RAM dan sekitar 10GB memori GPU. Memori GPU dapat dikompromikan dengan menggunakan ukuran batch yang lebih kecil dan menggunakan flag --accum_grad
.
Misalnya, alih -alih menjalankan:
python main.py --batch_size 1024 --type GGNN
Berikut ini menggunakan akumulasi gradien, dan mengambil lebih sedikit memori GPU:
python main.py --batch_size 512 --accum_grad 2 --type GGNN
Untuk menjalankan satu percobaan dari kertas, jalankan:
python main.py --help
Dan lihat bendera yang tersedia. Misalnya, untuk melatih GGNN dengan kedalaman = 4, jalankan:
python main.py --task DICTIONARY --eval_every 1000 --depth 4 --num_layers 5 --batch_size 1024 --type GGNN
Untuk melatih GNN di semua kedalaman, jalankan salah satu dari yang berikut:
python run-gcn-2-8.py
python run-gat-2-8.py
python run-ggnn-2-8.py
python run-gin-2-8.py
Hasil menjalankan skrip di atas adalah (Bagian 4.1 di koran):
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 |
GIN | 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 |
Untuk bereksperimen dengan tipe GNN lainnya:
GNN_TYPE
di sini, misalnya: MY_NEW_TYPE = auto()
elif self is GNN_TYPE.MY_NEW_TYPE:
Untuk membuat objek tipe GNN baru di sinimain.py
: python main.py --type MY_NEW_TYPE ...
Jika Anda ingin mengutip pekerjaan ini, silakan gunakan entri Bibtex ini:
@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}
}