GraphNeuralNetworks Monorepo

This is the monorepository for the GraphNeuralNetworks project, bringing together all code into a unified structure to facilitate code sharing and reusability across different project components. It contains the following packages:

  • GraphNeuralNetwork.jl: Package that contains stateful graph convolutional layers based on the machine learning framework Flux.jl. This is fronted package for Flux users. It depends on GNNlib.jl, GNNGraphs.jl, and Flux.jl packages.

  • GNNLux.jl: Package that contains stateless graph convolutional layers based on the machine learning framework Lux.jl. This is fronted package for Lux users. It depends on GNNlib.jl, GNNGraphs.jl, and Lux.jl packages.

  • GNNlib.jl: Package that contains the core graph neural network layers and utilities. It depends on GNNGraphs.jl and GNNlib.jl packages and serves for code base for GraphNeuralNetwork.jl and GNNLux.jl packages.

  • GNNGraphs.jl: Package that contains the graph data structures and helper functions for working with graph data. It depends on Graphs.jl package.

Here is a schema of the dependencies between the packages:

Monorepo schema

Among its general features:

  • Implements common graph convolutional layers both in stateful and stateless form.
  • Supports computations on batched graphs.
  • Easy to define custom layers.
  • CUDA support.
  • Integration with Graphs.jl.
  • Examples of node, edge, and graph level machine learning tasks.
  • Heterogeneous and temporal graphs.

Installation

GraphNeuralNetworks.jl, GNNlib.jl and GNNGraphs.jl are a registered Julia packages. You can easily install a package, for example GraphNeuralNetworks.jl, through the package manager :

pkg> add GraphNeuralNetworks

Usage

Usage examples can be found in the examples and in the notebooks folder. Also, make sure to read the documentation for a comprehensive introduction to the library and the tutorials.

Citing

If you use GraphNeuralNetworks.jl in a scientific publication, we would appreciate the following reference:

@misc{Lucibello2021GNN,
  author       = {Carlo Lucibello and other contributors},
  title        = {GraphNeuralNetworks.jl: a geometric deep learning library for the Julia programming language},
  year         = 2021,
  url          = {https://github.com/JuliaGraphs/GraphNeuralNetworks.jl}
}

Acknowledgments

GraphNeuralNetworks.jl is largely inspired by PyTorch Geometric, Deep Graph Library, and GeometricFlux.jl.