pub struct VariationalInference {
pub n_components: usize,
pub log_weights: Vec<f64>,
pub var_mean: Vec<f64>,
pub var_var: Vec<f64>,
pub prior_mean: f64,
pub prior_var: f64,
pub obs_var: f64,
pub elbo_history: Vec<f64>,
}Expand description
Mean-field variational inference for a Gaussian mixture model.
Maximizes the Evidence Lower BOund (ELBO) by coordinate ascent over the variational posterior factors.
Fields§
§n_components: usizeNumber of mixture components.
log_weights: Vec<f64>Variational component weights (log-scale unnormalized).
var_mean: Vec<f64>Variational mean for each component.
var_var: Vec<f64>Variational variance for each component.
prior_mean: f64Prior mean.
prior_var: f64Prior variance.
obs_var: f64Observation noise variance.
elbo_history: Vec<f64>ELBO history.
Implementations§
Source§impl VariationalInference
impl VariationalInference
Sourcepub fn new(
n_components: usize,
prior_mean: f64,
prior_var: f64,
obs_var: f64,
) -> Self
pub fn new( n_components: usize, prior_mean: f64, prior_var: f64, obs_var: f64, ) -> Self
Creates a new VariationalInference instance.
Sourcepub fn elbo(&self, observations: &[f64]) -> f64
pub fn elbo(&self, observations: &[f64]) -> f64
Computes the ELBO for current variational parameters given observations.
Sourcepub fn cavi_step(&mut self, observations: &[f64]) -> f64
pub fn cavi_step(&mut self, observations: &[f64]) -> f64
Performs one CAVI update step.
Returns the new ELBO.
Sourcepub fn fit(&mut self, observations: &[f64], n_iter: usize) -> f64
pub fn fit(&mut self, observations: &[f64], n_iter: usize) -> f64
Runs CAVI for n_iter iterations.
Sourcepub fn reparameterize(&self, k: usize, eps: f64) -> f64
pub fn reparameterize(&self, k: usize, eps: f64) -> f64
Reparameterization trick: samples from q(z) = N(mu, sigma^2) using eps ~ N(0,1).
Sourcepub fn predictive_density(&self, x: f64) -> f64
pub fn predictive_density(&self, x: f64) -> f64
Returns the predictive density at x under the variational posterior.
Trait Implementations§
Source§impl Clone for VariationalInference
impl Clone for VariationalInference
Source§fn clone(&self) -> VariationalInference
fn clone(&self) -> VariationalInference
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for VariationalInference
impl RefUnwindSafe for VariationalInference
impl Send for VariationalInference
impl Sync for VariationalInference
impl Unpin for VariationalInference
impl UnsafeUnpin for VariationalInference
impl UnwindSafe for VariationalInference
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.