AePPL
AePPL is a set of tools to build A[e]PPL with Aesara. The code is available on Github. AePPL takes any Aesara graph that contains random variables, such as:
import aesara import aesara.tensor as at srng = at.random.RandomStream(0) mu_rv = srng.normal(0, 1) sigma_rv = srng.halfcauchy(1) x_rv = srng.normal(mu_rv, sigma_rv) fn = aesara.function([], [mu_rv, sigma_rv, x_rv]) samples = fn() print(samples)
and constructs graphs that compute the joint log-density:
import aeppl logprob, (mu_vv, sigma_vv, x_vv) = aeppl.joint_logprob(mu_rv, sigma_rv, x_rv) fn = aesara.function([mu_vv, sigma_vv, x_vv], logprob) print(fn(*samples))
Or conditional log-densities:
import aeppl logprobs, (mu_vv, sigma_vv, x_vv) = aeppl.conditional_logprob(mu_rv, sigma_rv, x_rv) fn = aesara.function([mu_vv, sigma_vv, x_vv], logprobs[x_rv]) print(fn(*samples))
AePPL is designed to support every model that is mathematically well-defined, using an intermediate representation for probabilistic models in terms of probability measures.
AePPL provides support for the following: