I’m currently implementing geometric deep learning library. In particular, I’m extending Flux.jl to graphs and manifolds (taking advantage of the excellent LightGraphs.jl library). It’s working name is
I’m inspired by DGL, pytorch_geometric, and graph_nets libraries for Python. The plan is to eventually incorporate all of Spatial, Spectral, Spectrum-free, Charting-based and possibly other methods.
I’m curious if there is already such library for Julia (I looked around and was not able to find anything)?
I also welcome any thoughts, suggestions, and advice on this (including cool naming suggestions).
I’ve been working with pytorch_geometric, which has been a pleasure, and the main primitives that makes it fast are the scatter functions on GPU defined here along with the coalesce and sparse multiply functions defined here. I imagine having similarly performant implementations of those primitives in julia would go a long way. These primitives would probably be best defined in an existing or new GPU-centered repo, since they are not specific to Graph DL.
I would offer to help if I had time…
See this issue in flux: https://github.com/FluxML/Flux.jl/issues/625
There has been some interest expressed in working on such a library.
In particular, https://github.com/pevnak/Mill.jl was mentioned as being useful " [implements] all the layers you need for gnn. I have implemented GNN with Mill.jl and LightGraphs.jl in 4 hours when I had a flu."
There are plans to use it for a GNN library, perhaps it would be good to touch base with the contributors to that package.
i recommend you also take a look at my package Grassmann.jl which provides a very efficient implementation of geometric algebra
Sorry for the double posting, but seems the sets of the people involved are not overlapping:
Just a heads up - @yuehhua started the project called GeometricFlux.jl and it’s planned to be included in the FluxML project itself. See the announcement on this forum for more information.
Thanks to @XVilka for promoting GeometricFlux.jl. I have implemented some frequently used geometric deep learning/graph neural network layers and the abstraction of message-passing scheme, even the graph network (GN) block abstraction. PRs are welcome. Documentation and tutorials are coming.