  Normalizing flows model probability distributions through an expressive
tractable density. They transform a simple base distribution, such as a
Gaussian, through a sequence of invertible functions, which are referred to as
layers. These layers typically use neural networks to become very expressive.
Flows are ubiquitous in machine learning and have been applied to image
generation, text modeling, variational inference, approximating Boltzmann
distributions, and many other problems. Here, we present normflows, a Python
package for normalizing flows. It allows to build normalizing flow models from
a suite of base distributions, flow layers, and neural networks. The package is
implemented in the popular deep learning framework PyTorch, which simplifies
the integration of flows in larger machine learning models or pipelines. It
supports most of the common normalizing flow architectures, such as Real NVP,
Glow, Masked Autoregressive Flows, Neural Spline Flows, Residual Flows, and
many more. The package can be easily installed via pip and the code is publicly
available on GitHub.
