Model Building (liesel.model)#
This is an overview of the most important building blocks for setting up your model
graph with liesel.model
.
We usually import liesel.model
as follows:
import liesel.model as lsl
Additionnaly, it often makes sense to import jax.numpy
and tensorflow probability:
import jax.numpy as jnp
import tensorflow_probability.substrates.jax.distributions as tfd
The model building workflow in Liesel consists of two steps:
Set up the nodes and variables that make up your model.
Initialize a
Model
with your root variable(s).
Note
This document provides an overview of the most important classes for model building. You find more guidance on how to use them in the respective API documentation and in the tutorials.
Variables: The model building blocks#
The fundamental building blocks of your model graph are given by just two classes. Both are documented with examples, so make sure to check them out.
To set up Var
objects, Liesel provides four constructors:
Initializes a strong variable that acts as a model parameter. |
|
Initializes a strong variable that holds observed data. |
|
Initializes a weak variable that is a function of other variables. |
|
Initializes a strong variable without a distribution. |
We recommend to always use one of these constructors when initializing a variable.
This makes sure that the respective
Var.observed
and Var.parameter
flags are correctly set. This in
turn ensures that the Var.log_prob
of an observed variable will be included
in the Model.log_lik
and the Var.log_prob
of a parameter variable
will be included in the Model.log_prior
.
Build and plot your model#
The most important class here is the Model
.
For advanced users, further interesting functionality can be found here:
A graph builder, used to set up a |
|
Plots the nodes of a Liesel model. |