GeometricFlux is a geometric deep learning library for Flux. This library aims to be compatible with packages from JuliaGraphs ecosystem and have support of CUDA GPU acceleration with CuArrays. Message passing scheme is implemented as a flexbile framework and fused with Graph Network block scheme. GeometricFlux is compatible with other packages that are composable with Flux.
Suggestions, issues and pull requsts are welcome.
Construct layers from adjacency matrix or graph (maybe extend to other structures). Input features (including vertex, edge or graph features) of neural network may not need a structure or type. Labels or features for output of classification or regression are part of training data, they may not need a specific structure or type, too.
- NOTICE: Scatter operations on CUDA are only supported in v1.3 (due to new feature in CUDAnative v2.8 which only supports julia v1.3). CPU version scatter operations are always available.
Scatter operations are fundamental to GeometricFlux.jl and they are implemented in CPU and CUDA version. Benchmarks of scatter operations are done with scripts in benchmark folder. Statistics, includes max, min and mean, are shown in the following plots.
Performance of scatter add operations in GeometricFlux is better than pytorch_scatter on cuda.
However, performance in GeometricFlux is even worse than pytorch_scatter on cpu/threading.