kinkir / UniversalGNNs

Universal graph neural networks for multi-task transfer learning

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Universal graph neural networks for multi-task transfer learning

Given arbitrary prediction tasks and datasets, we want to train a single DL model that is able to solve them all. We propose a model that we call UniversalGNN for this, which is composed of four different components: an auto-encoder, a graph builder, a backbone GNN and a final regressor or classifier. The backbone GNN is the only component that is shared across all tasks, while the design of the other components depends on the individual tasks such that we create one for each dataset.

Getting started

Download this repository and the EnergyTransitionTasks one to your home directory. The EnergyTransitionTasks repository contains the datasets we use here:

cd 
git clone https://github.com/ArsamAryandoust/UniversalGNNs.git
git clone https://github.com/ArsamAryandoust/EnergyTransitionTasks.git
cd UniversalGNNs

Docker

The easiest way to build and run the Docker container is with the build_and_run.sh script inside the UniversalGNNs folder. To do this, execute the following command:

./build_and_run.sh

Experiments

All the models (included the baselines) can be trained from the main.py file inside of the src folder. The easiest way to do so is to start the Docker container built as above and inside of it run:

python3 src/main.py --help

This will show the available command line arguments that control the models that will be trained. For example, training the UniversalGNN model on the ClimART dataset is as eeasy as:

python3 src/main.py -climart --train_single

All the configurations reguarging how the models are trained are found inside the config.yaml file.

Contributions

Contributions are highly appreciated. If you find anything we can improve, please go to the Discussions tab and create a New discussion, where you describe your suggestion. For changes to code, download the repo, create a new branch off of latest_release, and give it a new branch name. After making changes to code and/or adding new functionalities, push your code to the repo and create your pull request to latest_release.

About

Universal graph neural networks for multi-task transfer learning

License:MIT License


Languages

Language:Python 58.3%Language:Jupyter Notebook 40.5%Language:Dockerfile 1.0%Language:Shell 0.2%