นี่คือการใช้งานอย่างเป็นทางการของกระดาษ: บนคอขวดของเครือข่ายประสาทกราฟและผลกระทบที่เป็นประโยชน์ (ICLR'2021) ซึ่งแนะนำปัญหา การเปลี่ยนแปลงของ GNNS มากเกินไป
โดย Uri Alon และ Eran Yahav ดูเพิ่มเติม [วิดีโอ], [โปสเตอร์] และ [สไลด์]
ที่เก็บนี้แบ่งออกเป็นสามโครงการย่อย:
tf-gnn-samples
เป็นโคลนของ https://github.com/microsoft/tf-gnn-samples โดย Brockschmidt (icml'2020) โครงการนี้สามารถใช้ในการทำซ้ำการทดลอง QM9 และ Varmisuse ของมาตรา 4.2 และ 4.2 ในกระดาษ โครงการย่อยนี้ขึ้นอยู่กับ TensorFlow 1.13 คำแนะนำสำหรับโคลนของเรานั้นเหมือนกับรหัสต้นฉบับของพวกเขายกเว้นการทำซ้ำการทดลองของเรา (ชุดข้อมูล QM9 และ Varmisuse) สามารถทำได้โดยการเรียกใช้สคริปต์ tf-gnn-samples/run_qm9_benchs_fa.py
หรือ tf-gnn-samples/run_varmisuse_benchs_fa.py
แทนที่จะเป็นสคริปต์ดั้งเดิม สำหรับการพึ่งพาและคำแนะนำเพิ่มเติมโปรดดู readme ดั้งเดิมของพวกเขา: https://github.com/microsoft/tf-gnn-samples/blob/master/readme.md การปรับเปลี่ยนหลักที่เราดำเนินการคือการใช้เลเยอร์ที่อยู่ติดกันอย่างสมบูรณ์เป็นเลเยอร์ GNN สุดท้ายและเราอธิบายในบทความของเราgnn-comparison
เป็นโคลนของ https://github.com/diningphil/gnn-comparison โดย Errica และคณะ (ICLR'2020) โครงการนี้สามารถใช้ในการทำซ้ำการทดลองทางชีวภาพ (ส่วนที่ 4.3, ชุดข้อมูลเอนไซม์และ NCI1) โครงการย่อยนี้ขึ้นอยู่กับ Pytorch 1.4 และ Pytorch-Geometric สำหรับการพึ่งพาและคำแนะนำเพิ่มเติมโปรดดู readme ดั้งเดิมของพวกเขา: https://github.com/diningphil/gnn-comparison/blob/master/readme.md คำแนะนำสำหรับโคลนของเราเหมือนกันยกเว้นว่าเราเพิ่มการตั้งค่าสถานะเพิ่มเติมใน config_*.yml
เรียกว่า last_layer_fa
ซึ่งตั้งค่าเป็น True
โดยค่าเริ่มต้นและทำซ้ำการทดลองของเรา การปรับเปลี่ยนหลักที่เราดำเนินการคือการใช้เลเยอร์ที่อยู่ติดกันอย่างสมบูรณ์เป็นเลเยอร์ GNN สุดท้ายโครงการนี้ได้รับการออกแบบให้มีประโยชน์ในการทดลองกับสถาปัตยกรรม GNN ใหม่และโซลูชันใหม่สำหรับปัญหาการกระจายตัวมากเกินไป
อย่าลังเลที่จะเปิดปัญหากับคำถามใด ๆ
โครงการนี้ขึ้นอยู่กับ Pytorch 1.4.0 และห้องสมุดเรขาคณิต Pytorch
pip install -r requirements.txt
ไฟล์ requirements.txt
. txt แสดงรายการข้อกำหนดเพิ่มเติม อย่างไรก็ตาม Pytorch Geometric อาจต้องใช้การติดตั้งด้วยตนเองและเราขอแนะนำให้ใช้ไฟล์ requirements.txt
หลังจากนั้นเท่านั้น
ตรวจสอบว่าการนำเข้าการอ้างอิงนั้นไม่มีข้อผิดพลาด:
python -c 'import torch; import torch_geometric'
การฝึกอบรมบนต้นไม้ใหญ่ (ความลึก = 8) อาจต้องใช้ RAM ~ 60GB และหน่วยความจำ GPU ประมาณ 10GB หน่วยความจำ GPU สามารถลดลงได้โดยใช้ขนาดแบทช์ที่เล็กลงและใช้ธง --accum_grad
ตัวอย่างเช่นแทนที่จะทำงาน:
python main.py --batch_size 1024 --type GGNN
ต่อไปนี้ใช้การสะสมการไล่ระดับสีและใช้หน่วยความจำ GPU น้อยลง:
python main.py --batch_size 512 --accum_grad 2 --type GGNN
ในการเรียกใช้การทดลองครั้งเดียวจากกระดาษให้เรียกใช้:
python main.py --help
และดูธงที่มีอยู่ ตัวอย่างเช่นในการฝึก GGNN ด้วยความลึก = 4, Run:
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 |
แก๊ส | 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}
}