gensbi.inference.posterior#
NLE posterior target: build log-densities from a trained likelihood flow + prior.
The flow is NLE-trained (obs = x, cond = theta), so flow.log_prob(x, theta)
is log q(x | theta). NLEPosterior turns (flow, prior, x_o) into a
PosteriorTarget (separate log-prior / log-likelihood / log-posterior closures),
which a Sampler consumes. The flow params are frozen constants inside the
closures; only theta is traced/differentiated.
Classes#
Amortized NLE posterior over a trained likelihood flow. |
|
Log-densities for one observation |
Module Contents#
- class gensbi.inference.posterior.NLEPosterior(flow, prior, *, structured_obs=False)[source]#
Amortized NLE posterior over a trained likelihood flow.
- Parameters:
flow (object) – Exposes
log_prob(x, cond) -> (B,)(an NLE-trainedMAFlow/TarFlow).prior (numpyro.distributions.Distribution) – Prior over theta;
prior.log_prob(theta)is a scalar andprior.sample(key, ())returns(dim,).structured_obs (bool, optional) – If
True,x_okeeps its (image/field) shape instead of being flattened. Default isFalse.
- build_target(x_o)[source]#
Build a posterior target for a single observation.
- Parameters:
x_o (Array) – Observed data. For non-structured: squeezed then promoted to
(dim_x, 1)(channel-carrying). Forstructured_obs=True: kept as-is (image/field shape).- Returns:
Frozen log-density container for
x_o.- Return type:
- sample(key, x_o, sampler=None, *, return_info=False)[source]#
Draw posterior samples for a single observation.
- Parameters:
key (jax.random.PRNGKey) – Random key.
x_o (Array) – Observed data passed to
build_target().sampler (Sampler or None, optional) – Sampler instance to use. If
None, defaults toMCLMC. Default isNone.return_info (bool, optional) – If
True, return a(samples, info)tuple instead of justsamples. Default isFalse.
- Returns:
samples (Array) – Posterior samples of shape
(n, dim, 1). Whenreturn_info=False(the default), this is the only return value.info (object) – Sampler-specific info object (
MclmcInfo,SmcInfo, orNestedSamplerInfo). Only present whenreturn_info=True.
- class gensbi.inference.posterior.PosteriorTarget[source]#
Log-densities for one observation
x_o.Frozen dataclass produced by
NLEPosterior.build_target(). All callables accept a flat parameter vectorthetaof shape(dim,).- Parameters:
log_prior (Callable) – Log-prior density. Signature:
log_prior(theta) -> float.log_likelihood (Callable) – Log-likelihood
log q(x_o | theta)from the NLE-trained flow. Signature:log_likelihood(theta) -> float.log_posterior (Callable) – Unnormalised log-posterior
log_likelihood(theta) + log_prior(theta). Signature:log_posterior(theta) -> float.prior (object) – Prior distribution; must expose
sample(key, shape)andlog_prob(theta).dim (int) – Dimensionality of the parameter space.