AePPL is a flexible collection of tools that allows users to define and manipulate probabilistic models implemented in Aesara.
AePPL strives to make probabilistic programming as simple as it should be, and as exhaustive as can be.
Intuitive: All you need is an Aesara graph that contains random variables; no need to learn a new syntax
Exhaustive: If your problem is mathematically well-defined, AePPL is designed to support it.
A broad ecosystem: Benefit from Aesara’s current and future compilation backends (e.g. C, JAX, Numba). Use your model with other Aesara, Numba or JAX libraries
Flexible: Define your own distributions by transforming random variables directly; condition on transformed random variables; use loops and conditionals in your model.
Extensible: Aesara provides tools to easily traverse and transform probabilistic models
import aeppl import aesara import aesara.tensor as at srng = at.random.RandomStream() S_rv = srng.invgamma(0.5, 0.5) Y_rv = srng.normal(0.0, at.sqrt(S_rv)) # Print a LateX representation of the model aeppl.latex_pprint(Y_rv) # Compute the joint log-probability for the mixture logprob, (s_vv, y_vv) = joint_logprob(S_rv, Y_rv) # Compile to C, Numba or JAX fn = aesara.function([s_vv, y_vv], logprob) numba_fn = aesara.function([s_vv, y_vv], logprob, mode="NUMBA") jax_fn = aesara.function([s_vv, y_vv], logprob, mode="JAX")
AePPL installation can happen in a few different ways. You can install AePPL with
conda or with
pip. To get the bleeding edge version you can install
pip install aeppl
conda install -c conda-forge aeppl
pip install aeppl-nightly