# Geometric DL library for Julia

**URL:** <https://discourse.julialang.org/t/geometric-dl-library-for-julia/22901>\
**Category:** Machine Learning\
**Tags:** package\
**Created:** [April 8, 2019, 4:42am UTC](https://discourse.julialang.org/t/geometric-dl-library-for-julia/22901 "2019-04-08T04:42:28Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Azamat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/azamat/32/6892_2.png) [@Azamat](https://discourse.julialang.org/u/Azamat)\
**Post date:** [April 8, 2019, 4:42am UTC](https://discourse.julialang.org/t/geometric-dl-library-for-julia/22901/1 "2019-04-08T04:42:28Z")

</div>

I’m currently implementing geometric deep learning library. In particular, I’m extending [Flux.jl](https://github.com/FluxML/Flux.jl) to graphs and manifolds (taking advantage of the excellent [LightGraphs.jl](https://github.com/JuliaGraphs/LightGraphs.jl) library). It’s working name is `FluxGeometric.jl`.

I’m inspired by [DGL](https://github.com/dmlc/dgl), [pytorch\_geometric](https://github.com/rusty1s/pytorch_geometric), and [graph\_nets](https://github.com/deepmind/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). 🙂

---

<div class="post-metadata">

**Author:** ![kolia](https://avatars.discourse-cdn.com/v4/letter/k/c68b51/32.png) [@kolia](https://discourse.julialang.org/u/kolia)\
**Post date:** [April 8, 2019, 6:20am UTC](https://discourse.julialang.org/t/geometric-dl-library-for-julia/22901/2 "2019-04-08T06:20:37Z")

</div>

I’ve been working with [pytorch\_geometric](https://github.com/rusty1s/pytorch_geometric), which has been a pleasure, and the main primitives that makes it fast are the scatter functions on GPU defined [here](https://github.com/rusty1s/pytorch_scatter) along with the coalesce and sparse multiply functions defined [here](https://github.com/rusty1s/pytorch_sparse). 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…

---

<div class="post-metadata">

**Author:** ![datnamer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datnamer/32/3471_2.png) [@datnamer](https://discourse.julialang.org/u/datnamer)\
**Post date:** [April 8, 2019, 5:45pm UTC](https://discourse.julialang.org/t/geometric-dl-library-for-julia/22901/3 "2019-04-08T17:45:15Z")

</div>

Hi Azamat,

See this issue in flux: [https://github.com/FluxML/Flux.jl/issues/625](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](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.

---

<div class="post-metadata">

**Author:** ![chakravala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chakravala/32/6832_2.png) [@chakravala](https://discourse.julialang.org/u/chakravala)\
**Post date:** [April 8, 2019, 5:53pm UTC](https://discourse.julialang.org/t/geometric-dl-library-for-julia/22901/4 "2019-04-08T17:53:56Z")

</div>

i recommend you also take a look at my package [Grassmann.jl](https://github.com/chakravala/Grassmann.jl) which provides a very efficient implementation of [geometric algebra](https://en.m.wikipedia.org/wiki/Geometric_algebra)

---

<div class="post-metadata">

**Author:** ![XVilka](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xvilka/32/7155_2.png) [@XVilka](https://discourse.julialang.org/u/XVilka)\
**Post date:** [January 13, 2020, 4:18am UTC](https://discourse.julialang.org/t/geometric-dl-library-for-julia/22901/5 "2020-01-13T04:18:03Z")

</div>

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](https://github.com/yuehhua/GeometricFlux.jl) and it’s [planned to be included in the FluxML project itself](https://github.com/yuehhua/GeometricFlux.jl/issues/2#issuecomment-549801258). See the [announcement on this forum](https://discourse.julialang.org/t/ann-geometricflux-jl-geometric-deep-learning-for-flux/27063) for more information.

---

<div class="post-metadata">

**Author:** ![yuehhua](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuehhua/32/12281_2.png) [@yuehhua](https://discourse.julialang.org/u/yuehhua)\
**Post date:** [January 13, 2020, 6:25am UTC](https://discourse.julialang.org/t/geometric-dl-library-for-julia/22901/6 "2020-01-13T06:25:34Z")

</div>

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.
