This repository provides the official reference implementation of our papers
- Anti-Symmetric DGN: a stable architecture for Deep Graph Networks accepted at ICLR 2023
- Non-Dissipative Propagation by Anti-Symmetric Deep Graph Networks accepted at the DLG-AAAI’23 workshop.
- Non-Dissipative Propagation by Randomized Anti-Symmetric Deep Graph Networks accepted at the Deep Learning meets Neuromorphic Hardware Workshop, ECML-PKDD 2023.
Please consider citing us
@inproceedings{gravina2023adgn,
author = {Alessio Gravina and Davide Bacciu and Claudio Gallicchio},
title = {{Anti-Symmetric DGN: a stable architecture for Deep Graph Networks}},
booktitle = {The Eleventh International Conference on Learning Representations },
year = {2023},
url = {https://openreview.net/forum?id=J3Y7cgZOOS}
}
@inproceedings{gravina2023randomized,
author = {Alessio Gravina and Claudio Gallicchio and Davide Bacciu},
title = {{Non-Dissipative Propagation by Randomized Anti-Symmetric Deep Graph Networks}},
booktitle = {},
year = {2023},
url = {}
}
Note: we assume Miniconda/Anaconda is installed, otherwise see this link for correct installation. The proper Python version is installed during the first step of the following procedure.
-
Install the required packages and create the environment
conda env create -f env.yml
-
Activate the environment
conda activate adgn
Note: To run the experiment is fundamental to define the model name and dataset name into the run_all.sh files. For more details launch python3 main.py --help
or python3 run-adgn-2-8.py --help
-
Graph property prediction
graph_prop_pred/run_all.sh
-
Graph benchmarks
graph_benchmark/run_all.sh
- Note: please ensure that conf_seeds_5.json and conf_seeds_5.json match the generated seed before running the experiment
-
Graph heterophilic benchmarks
graph_heteropily/run_all.sh
-
Tree-NeighborsMatch
Tree-NeighborsMatch/run_all.sh
The repository is structured as follows:
├── README.md <- The top-level README.
│
├── env.yml <- The conda environment requirements.
│
├── conda_list_output.txt <- The specific version of each package in the adgn environment.
│
├── graph_benchmark <- Contains the code to reproduce the graph benchmarks experiment.
│ ├── conf_seeds_5.json <- The configuration seeds used in the experiment.
│ ├── data_seeds_5.json <- The seeds used in the experiment to split the dataset into train/valid/test.
│ ├── run_all.sh <- The script used to run the experiment. Note: you need to specify the name of the model and the dataset (see conf.py and utils/__init__.py)
│ ├── models <- Contains the code for the framework A-DGN and other DGNs
│ ├── utils <- Contains the code for data and io utilities.
│ ├── main.py <- The main.
│ ├── train.py <- Implements the code responsible for training and evaluation of the models.
│ ├── conf.py <- Contains the hyper-parameter space for each model.
│ └── model_selction.py <- Implements the model selection and produces the report of the results.
│
└── graph_prop_pred <- Contains the code to reproduce the graph property prediction experiment.
│ ├── run_all.sh <- The script used to run the experiment. Note: you need to specify the name of the model and the dataset (see conf.py and utils/__init__.py)
│ ├── models <- Contains the code for the framework A-DGN and other DGNs
│ ├── utils <- Contains the code for data and io utilities.
│ ├── main.py <- The main.
│ ├── train_GraphProp.py <- Implements the code responsible for training and evaluation of the models.
│ ├── conf.py <- Contains the hyper-parameter space for each model.
│ └── model_selction.py <- Implements the model selection and produces the report of the results.
│
├── graph_heteropily <- Contains the code to reproduce the graph heterophilic benchmarks experiment.
│ ├── run_all.sh <- The script used to run the experiment. Note: you need to specify the name of the model and the dataset (see conf.py and utils/__init__.py)
│ ├── models <- Contains the code for the framework A-DGN and other DGNs
│ ├── utils <- Contains the code for data and io utilities.
│ ├── main.py <- The main.
│ ├── train.py <- Implements the code responsible for training and evaluation of the models.
│ ├── conf.py <- Contains the hyper-parameter space for each model.
│ └── model_selction.py <- Implements the model selection and produces the report of the results.
│
└── Tree-NeighborsMatch <- Contains the code to reproduce the Tree-NeighborsMatch experiment retrieved from the original source code: https://github.com/tech-srl/bottleneck.
├── run_all.sh <- The script used to run the experiment. Note: you need to specify the name of the model and the dataset (see conf.py and utils/__init__.py)
└── run-adgn-2-8.py <- The main.