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