GeometricFlux.jl

Geometric Deep Learning for Flux
Author FluxML
Popularity
200 Stars
Updated Last
2 Years Ago
Started In
April 2019

GeometricFlux.jl

codecov

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

Installation

]add GeometricFlux

Features

  • Extend Flux deep learning framework in Julia and compatible with Flux layers.
  • Support of CUDA GPU with CUDA.jl
  • Integrate with existing JuliaGraphs ecosystem
  • Support generic graph neural network architectures
  • Variable graph inputs are supported. You use it when diverse graph structures are prepared as inputs to the same model.
  • Integrate GNN benchmark datasets (WIP)

Graph convolutional layers

Construct GCN layer:

graph = # can be adj_mat, adj_list, simple_graphs...
GCNConv([graph, ]input_dim=>output_dim, relu)

Use it as you use Flux

model = Chain(GCNConv(g, 1024=>512, relu),
              Dropout(0.5),
              GCNConv(g, 512=>128),
              Dense(128, 10),
              softmax)
## Loss
loss(x, y) = logitcrossentropy(model(x), y)
accuracy(x, y) = mean(onecold(model(x)) .== onecold(y))

## Training
ps = Flux.params(model)
train_data = [(train_X, train_y)]
opt = ADAM(0.01)
evalcb() = @show(accuracy(train_X, train_y))

Flux.train!(loss, ps, train_data, opt, cb=throttle(evalcb, 10))