โ๏ธ Geometric GNN Dojo
Geometric GNN Dojo is a pedagogical resource for beginners and experts to explore the design space of Graph Neural Networks for geometric graphs.
Check out the accompanying paper 'On the Expressive Power of Geometric Graph Neural Networks', which studies the expressivity and theoretical limits of geometric GNNs.
Chaitanya K. Joshi*, Cristian Bodnar*, Simon V. Mathis, Taco Cohen, and Pietro Liรฒ. On the Expressive Power of Geometric Graph Neural Networks. NeurIPS 2022 Workshop on Symmetry and Geometry in Neural Representations.
Architectures
The /src
directory provides unified implementations of several popular geometric GNN architectures:
- Invariant GNNs: SchNet, DimeNet
- Equivariant GNNs using cartesian vectors: E(n) Equivariant GNN, GVP-GNN
- Equivariant GNNs using spherical tensors: Tensor Field Network, MACE
๐ฅ Your new geometric GNN architecture?
Experiments
The /experiments
directory contains notebooks with synthetic experiments to highlight practical challenges in building powerful geometric GNNs:
kchains.ipynb
: Distinguishing k-chains, which test a model's ability to propagate geometric information non-locally and demonstrate oversquashing with increased depth/longer chains.rotsym.ipynb
: Rotationally symmetric structures, which test a layer's ability to identify neighbourhood orientation and highlight the utility of higher order tensors in equivariant GNNs.incompleteness.ipynb
: Counterexamples from Pozdnyakov et al., which test a layer's ability to create distinguishing fingerprints for local neighbourhoods and highlight the need for higher body order of local scalarisation (distances, angles, and beyond).
Installation
# Create new conda environment
conda create --prefix ./env python=3.8
conda activate ./env
# Install PyTorch (Check CUDA version for GPU!)
#
# Option 1: CPU
conda install pytorch==1.12.0 -c pytorch
#
# Option 2: GPU, CUDA 11.3
# conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
# Install dependencies
conda install matplotlib pandas networkx
conda install jupyterlab -c conda-forge
pip install e3nn==0.4.4 ipdb ase
# Install PyG (Check CPU/GPU/MacOS)
#
# Option 1: CPU, MacOS
pip install torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-1.12.0+cpu.html
pip install torch-geometric
#
# Option 2: GPU, CUDA 11.3
# pip install torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-1.12.1+cu113.html
# pip install torch-geometric
#
# Option 3: CPU/GPU, but may not work on MacOS
# conda install pyg -c pyg
Directory Structure and Usage
.
โโโ README.md
|
โโโ geometric_gnn_101.ipynb # A gentle introduction to Geometric GNNs
|
โโโ experiments # Synthetic experiments
โ โโโ incompleteness.ipynb # Experiment on counterexamples from Pozdnyakov et al.
โ โโโ kchains.ipynb # Experiment on k-chains
โ โโโ rotsym.ipynb # Experiment on rotationally symmetric structures
|
โโโ src # Geometric GNN models library
โโโ models.py # Models built using layers
โโโ gvp_layers.py # Layers for GVP-GNN
โโโ egnn_layers.py # Layers for E(n) Equivariant GNN
โโโ tfn_layers.py # Layers for Tensor Field Networks
โโโ modules # Layers for MACE
โโโ utils # Helper functions for training, plotting, etc.
Contact
Authors: Chaitanya K. Joshi ([email protected]), Simon V. Mathis ([email protected]). We welcome your questions and feedback via email or GitHub Issues.
Citation
@article{joshi2022expressive,
title={On the Expressive Power of Geometric Graph Neural Networks},
author={Joshi, Chaitanya K. and Bodnar, Cristian and Mathis, Simon V. and Cohen, Taco and Liรฒ, Pietro},
journal={NeurIPS Workshop on Symmetry and Geometry in Neural Representations},
year={2022},
}