Overview of FlowJAX features and architectures
mainFlowJAX provides a suite of tools for working with distributions, bijections, and normalizing flows using Equinox and JAX.
Key Capabilities
- PyTree Compatibility: Distributions and bijections are Equinox modules, allowing them to work seamlessly with JAX transformations.
- Conditional Support: First-class support for conditional distributions and density estimation.
- Inversion: Includes a bisection search algorithm to invert bijections that lack a known analytical inverse.
Supported Architectures
- Normalizing Flows:
coupling_flow(Dinh et al., 2017)masked_autoregressive_flow(Kingma et al., 2016; Papamakarios et al., 2017)block_neural_autoregressive_flow(De Cao et al., 2019)planar_flow(Rezende and Mohamed, 2015)triangular_spline_flow(introduced in this repo)
- Transformers: Flows can use arbitrary bijections as transformers, such as
AffineorRationalQuadraticSpline(for neural spline flows).
Training Methods
Training scripts are available for:
- Maximum likelihood
- Variational inference
- Contrastive learning for sequential neural posterior estimation