InvertibleNetworks.jl
InvertibleNetworks.jl: A Julia package for scalable normalizing flows - Published in JOSS (2024)
Science Score: 100.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 7 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: arxiv.org, joss.theoj.org -
✓Committers with academic emails
14 of 22 committers (63.6%) from academic institutions -
✓Institutional organization owner
Organization slimgroup has institutional domain (slim.gatech.edu) -
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Scientific Fields
Repository
A Julia framework for invertible neural networks
Basic Info
Statistics
- Stars: 166
- Watchers: 10
- Forks: 25
- Open Issues: 21
- Releases: 27
Topics
Metadata Files
README.md
InvertibleNetworks.jl
| Documentation | Build Status | JOSS paper |
|:-----------------:|:-----------------:|:----------------:|
|
|
|
Building blocks for invertible neural networks in the Julia programming language.
- Memory efficient building blocks for invertible neural networks
- Hand-derived gradients, Jacobians $J$ , and $\log |J|$
- Flux integration
- Support for Zygote and ChainRules
- GPU support
- Includes various examples of invertible neural networks, normalizing flows, variational inference, and uncertainty quantification
Installation
InvertibleNetworks is registered and can be added like any standard Julia package with the command:
] add InvertibleNetworks
Uncertainty-aware image reconstruction
Due to its memory scaling InvertibleNetworks.jl, has been particularily successful at Bayesian posterior sampling with simulation-based inference. To get started with this application refer to a simple example (Conditional sampling for MNSIT inpainting) but feel free to modify this script for your application and please reach out to us for help.

Building blocks
1x1 Convolutions using Householder transformations (example)
Residual block (example)
Invertible coupling layer from Dinh et al. (2017) (example)
Invertible hyperbolic layer from Lensink et al. (2019) (example)
Invertible coupling layer from Putzky and Welling (2019) (example)
Invertible recursive coupling layer HINT from Kruse et al. (2020) (example)
Activation normalization (Kingma and Dhariwal, 2018) (example)
Various activation functions (Sigmoid, ReLU, leaky ReLU, GaLU)
Objective and misfit functions (mean squared error, log-likelihood)
Dimensionality manipulation: squeeze/unsqueeze (column, patch, checkerboard), split/cat
Squeeze/unsqueeze using the wavelet transform
Examples
Invertible recurrent inference machines (Putzky and Welling, 2019) (generic example)
Generative models with maximum likelihood via the change of variable formula (example)
Glow: Generative flow with invertible 1x1 convolutions (Kingma and Dhariwal, 2018) (generic example, source)
GPU support
GPU support is supported via Flux/CuArray. To use the GPU, move the input and the network layer to GPU via |> gpu
``` using InvertibleNetworks, Flux
Input
nx = 64 ny = 64 k = 10 batchsize = 4
Input image: nx x ny x k x batchsize
X = randn(Float32, nx, ny, k, batchsize) |> gpu
Activation normalization
AN = ActNorm(k; logdet=true) |> gpu
Test invertibility
Y_, logdet = AN.forward(X) ```
Reference
If you use InvertibleNetworks.jl in your research, we would be grateful if you cite us with the following bibtex:
@article{Orozco2024, doi = {10.21105/joss.06554}, url = {https://doi.org/10.21105/joss.06554}, year = {2024}, publisher = {The Open Journal}, volume = {9}, number = {99}, pages = {6554}, author = {Rafael Orozco and Philipp Witte and Mathias Louboutin and Ali Siahkoohi and Gabrio Rizzuti and Bas Peters and Felix J. Herrmann}, title = {InvertibleNetworks.jl: A Julia package for scalable normalizing flows}, journal = {Journal of Open Source Software} }
Papers
The following publications use InvertibleNetworks.jl:
"Reliable amortized variational inference with physics-based latent distribution correction"
- paper: https://arxiv.org/abs/2207.11640
- presentation
- code: ReliableAVI.jl
"Learning by example: fast reliability-aware seismic imaging with normalizing flows"
-
- paper
- code: WavefieldRecoveryUQ.jl
"Preconditioned training of normalizing flows for variational inference in inverse problems"
"Generalized Minkowski sets for the regularization of inverse problems"
Contributing
We welcome contributions and bug reports! Please see CONTRIBUTING.md for guidance.
InvertibleNetworks.jl development subscribes to the Julia Community Standards.
Authors
Rafael Orozco, Georgia Institute of Technology [rorozco@gatech.edu]
Philipp Witte, Georgia Institute of Technology (now Microsoft)
Gabrio Rizzuti, Utrecht University
Mathias Louboutin, Georgia Institute of Technology
Ali Siahkoohi, Georgia Institute of Technology
## Acknowledgments
This package uses functions from NNlib.jl, Flux.jl and Wavelets.jl
Owner
- Name: SLIM GROUP
- Login: slimgroup
- Kind: organization
- Email: Felix.herrmann@gatech.edu
- Location: Georgia Institute of Technology, USA
- Website: https://slim.gatech.edu
- Repositories: 54
- Profile: https://github.com/slimgroup
Repositories for software by SLIM group
JOSS Publication
InvertibleNetworks.jl: A Julia package for scalable normalizing flows
Authors
Georgia Institute of Technology (GT), USA
Microsoft Research, USA
Devito Codes, UK
Rice University, USA
Shearwater GeoServices, UK
Computational Geosciences Inc, Canada
Georgia Institute of Technology (GT), USA
Tags
inverse problems Bayesian inference imaging normalizing flowsCitation (CITATION.bib)
@article{Orozco2024, doi = {10.21105/joss.06554}, url = {https://doi.org/10.21105/joss.06554}, year = {2024}, publisher = {The Open Journal}, volume = {9}, number = {99}, pages = {6554}, author = {Rafael Orozco and Philipp Witte and Mathias Louboutin and Ali Siahkoohi and Gabrio Rizzuti and Bas Peters and Felix J. Herrmann}, title = {InvertibleNetworks.jl: A Julia package for scalable normalizing flows}, journal = {Journal of Open Source Software} }
GitHub Events
Total
- Watch event: 11
- Delete event: 4
- Issue comment event: 5
- Push event: 4
- Pull request review comment event: 6
- Pull request review event: 4
- Pull request event: 7
- Fork event: 1
- Create event: 3
Last Year
- Watch event: 11
- Delete event: 4
- Issue comment event: 5
- Push event: 4
- Pull request review comment event: 6
- Pull request review event: 4
- Pull request event: 7
- Fork event: 1
- Create event: 3
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| philippwitte | p****e@y****m | 145 |
| rafaelorozco | r****o@g****u | 101 |
| Mathias Louboutin | m****n@g****m | 58 |
| Gabrio Rizzuti | r****o@g****m | 43 |
| Gabrio Rizzuti | g****3@g****u | 13 |
| Rafael Orozco | r****3@c****u | 13 |
| Ali Siahkoohi | a****i@g****m | 11 |
| Orozco | r****3@c****u | 11 |
| Ali Siahkoohi | a****k@g****u | 11 |
| rafael orozco | r****o@l****u | 8 |
| Rafael Orozco | r****3@d****u | 6 |
| CompatHelper Julia | c****y@j****g | 5 |
| Felix Herrmann | f****n@g****u | 4 |
| rafael orozco | r****o@l****u | 3 |
| pwitte3 | p****3@g****u | 3 |
| Páll Haraldsson | P****n@g****m | 2 |
| PetersBas | 1****s@g****m | 2 |
| felix | f****n@e****a | 2 |
| rafael orozco | r****o@i****u | 1 |
| rafael orozco | r****o@i****u | 1 |
| Ziyi (Francis) Yin | z****n@g****u | 1 |
| Grant Bruer | g****l@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 27
- Total pull requests: 94
- Average time to close issues: 5 months
- Average time to close pull requests: about 1 month
- Total issue authors: 19
- Total pull request authors: 15
- Average comments per issue: 4.37
- Average comments per pull request: 0.89
- Merged pull requests: 68
- Bot issues: 0
- Bot pull requests: 13
Past Year
- Issues: 2
- Pull requests: 7
- Average time to close issues: N/A
- Average time to close pull requests: about 2 hours
- Issue authors: 2
- Pull request authors: 4
- Average comments per issue: 0.0
- Average comments per pull request: 0.71
- Merged pull requests: 2
- Bot issues: 0
- Bot pull requests: 2
Top Authors
Issue Authors
- flo-he (3)
- ziyiyin97 (3)
- yl4070 (2)
- sethaxen (2)
- itsdfish (2)
- ryxchina (1)
- alisiahkoohi (1)
- JuliaTagBot (1)
- eshantenglish (1)
- gbruer15 (1)
- advaitb (1)
- scheidan (1)
- rafaelorozco (1)
- kramsretlow (1)
- aurorarossi (1)
Pull Request Authors
- rafaelorozco (39)
- mloubout (18)
- github-actions[bot] (15)
- grizzuti (7)
- philippwitte (6)
- alisiahkoohi (6)
- gbruer15 (4)
- PetersBas (2)
- drvinceknight (2)
- aurorarossi (2)
- Nando-Hegemann (2)
- ziyiyin97 (1)
- jayjay-park (1)
- PallHaraldsson (1)
- danielskatz (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- julia 10 total
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 21
juliahub.com: InvertibleNetworks
A Julia framework for invertible neural networks
- Documentation: https://docs.juliahub.com/General/InvertibleNetworks/stable/
- License: MIT
-
Latest release: 2.3.0
published over 1 year ago
Rankings
Dependencies
- JuliaRegistries/TagBot v1 composite
- styfle/cancel-workflow-action 0.4.0 composite
- actions/checkout v3 composite
- julia-actions/setup-julia latest composite
- actions/checkout v3 composite
- codecov/codecov-action v1 composite
- julia-actions/julia-buildpkg latest composite
- julia-actions/julia-processcoverage v1 composite
- julia-actions/julia-runtest latest composite
- julia-actions/setup-julia v1 composite
