Need help with GeometricFlux.jl?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

yuehhua
167 Stars 13 Forks MIT License 572 Commits 20 Opened issues

Description

Geometric Deep Learning for Flux

Services available

!
?

Need anything else?

Contributors list

# 269,629
The Jul...
statist...
Jupyter...
TeX
416 commits
# 505,302
JavaScr...
TeX
Shell
geometr...
28 commits
# 114,328
Shell
R
ggplot-...
awk
7 commits
# 7,854
The Jul...
spectro...
Shell
hpc
5 commits
# 21,010
The Jul...
Jupyter...
dynamic...
Shell
2 commits
# 7,786
OCaml
radare2
Vue.js
opam
1 commit
# 280,781
julia-l...
markov-...
webfram...
juliala...
1 commit

GeometricFlux.jl

Build Status codecov pipeline status coverage report

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.