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.
  • Support for heterogeneous and temporal graphs.

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 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.