Skip to content

JuliaGraphs/GraphNeuralNetworks.jl

Repository files navigation

GraphNeuralNetworks.jl

codecov

Libraries for deep learning on graphs in Julia, using either Flux.jl or Lux.jl as backend frameworks.

This repository contains the following packages:

  • GraphNeuralNetworks.jl: Provides graph convolutional layers based on the deep learning framework Flux.jl. This is the frontend package for Flux users.

  • GNNLux.jl: Offers graph convolutional layers based on the deep learning framework Lux.jl. This is the frontend package for Lux users.

  • GNNGraphs.jl: Provides graph data structures and helper functions for working with graph data. This package is re-exported by the frontend packages.

  • GNNlib.jl: Implements the message-passing framework based on the gather/scatter mechanism or sparse matrix multiplication. It also includes shared implementations for the layers used by the two frontend packages. This package is not intended for direct use by end-users but is re-exported by the frontend packages.

Features

Both GraphNeuralNetworks.jl and GNNLux.jl support the following features:

  • Implementation of common graph convolutional layers.
  • Computation on batched graphs.
  • Custom layer definitions.
  • Support for CUDA and AMDGPU.
  • Integration with Graphs.jl.
  • Examples of node, edge, and graph-level machine learning tasks.
  • Heterogeneous and dynamical graphs and convolutions.

Installation

All packages are registered in the General registry, making them easy to install via the Julia package manager.

For Flux users, run:

pkg> add GraphNeuralNetworks

For Lux users, run:

pkg> add GNNLux

There is no need to install GNNGraphs or GNNlib directly, as their functionality is re-exported by the frontend packages.

Usage

Usage examples can be found in the examples folder and the notebooks folder.

For a comprehensive introduction to the library, refer to the Documentation.

Citing

If you use GraphNeuralNetworks.jl in a scientific publication, we would appreciate a reference to our paper:

@article{lucibello2024graphneuralnetworks,
  title={GraphNeuralNetworks.jl: Deep Learning on Graphs with Julia},
  author={Lucibello, Carlo and Rossi, Aurora},
  journal={arXiv preprint arXiv:2412.06354},
  url={https://arxiv.org/abs/2412.06354},
  year={2024}
}

Acknowledgments

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