Callbacks
Omega uses Lenses and Callbacks to support queries such as:
- Time left until the simulation end
- Convergence properties of the Markov Chains
- Periodically saving results to disk
Each inference procedure exports some lenses. Currently these are of the form InferenceAlgLoop
. For example, the inference procedureSSMH
has SSMHLoop
lens called after each sample.
Usage
using Callbacks, Lens
x = ~ ω -> (sleep(0.001); normal(ω, 0, 1))
@leval Loop => showprogress(10000) rand(x, 10000)
using Omega.Inference: SSMHLoop
x =~ ω -> (sleep(0.001); normal(ω, 0, 1))
@leval SSMHLoop => plotloss() rand(x, x >ₛ 0.0, 10000; alg = SSMH)
@leval SSMHLoop => default_cbs(10000) rand(x, x >ₛ 0.0, 10000; alg = SSMH)
Default Callbacks
default_cbs(n)
returns a callback that displays a bunch of information likely to be useful, such as processbar, the likelihood, etc. It takes as input n
, the number of samples:
Example usage:
using Omega
x = ω -> (sleep(0.001); normal(ω, 0, 1))
@leval SSMHLoop => default_cbs(10000) rand(x, x >ₛ 0.0, 10000; alg = SSMH)