Basic implementation (no streaming) for medium sized problems.
Given
$G_u$ or $\Lambda_u$
$\Lambda_\epsilon$
H optionally
One runs
fit(U_prior_sample, Y=None) : Fit precision of X and (sparse) mapping H:x->y if needed (Y required then).
transport(U_prior_sample) -> U_posterior_sample : Transport X from a sample from the prior to the posterior
fit() consists of
self.fit_precision(U) # fit precision of u to data w.r.t. G_u
if self.H is None: # if H is not provided
self.H = self.fit_H(X, Y) # learn (sparse) H
transport() consists of
canonical = self.pushforward_to_canonical(prior) # nu = Prec_u_prior u
updated = self.update_canonical(canonical, d) # nu = nu + H.T Prec_epsilon y
return self.pullback_from_canonical(updated) # u = Prec_u_posterior^{-1} nu
Note that
$H$ is either entirely learned or entirely passed
No streaming
No implementation on base classes with KR-triangular map datastructures
Basic implementation (no streaming) for medium sized problems.
Given
One runs
fit(U_prior_sample, Y=None)
: Fit precision of X and (sparse) mapping H:x->y if needed (Y required then).transport(U_prior_sample) -> U_posterior_sample
: Transport X from a sample from the prior to the posteriorfit()
consists oftransport()
consists ofNote that