Giter Club home page Giter Club logo

gravins / anti-symmetricdgn Goto Github PK

View Code? Open in Web Editor NEW
10.0 2.0 0.0 9.2 MB

Official code repository for the papers "Anti-Symmetric DGN: a stable architecture for Deep Graph Networks" accepted at ICLR 2023; "Non-Dissipative Propagation by Anti-Symmetric Deep Graph Networks"; and "Non-Dissipative Propagation by Randomized Anti-Symmetric Deep Graph Networks"

Python 98.87% Shell 1.13%
deep-learning graphneuralnetwork deep-graph-networks graph-neural-networks ordinary-differential-equations

anti-symmetricdgn's Introduction

Anti-Symmetric DGN

This repository provides the official reference implementation of our papers

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

Requirements

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.

  1. Install the required packages and create the environment

    • conda env create -f env.yml
  2. Activate the environment

    • conda activate adgn

Run the experiment

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

Repository structure

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.

anti-symmetricdgn's People

Contributors

gravins avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

anti-symmetricdgn's Issues

Issue with running graph property prediction.

Hi, I noticed that the code for Graph property prediction appears incomplete, such as missing file main_bench.py and self.conv_name in some models. I tried to fix the above issues, but the results I reproduced are much higher than those reported in the paper. Could you provide more details about the experiments of graph property prediction?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.