pub struct KLDivergence;Expand description
KL Divergence computations
Implementations§
Source§impl KLDivergence
impl KLDivergence
Sourcepub fn gaussian_to_unit(gaussian: &DiagonalGaussian) -> f32
pub fn gaussian_to_unit(gaussian: &DiagonalGaussian) -> f32
KL(N(mu, sigma^2) || N(0, 1)) = 0.5 * sum(exp(log_var) + mu^2 - 1 - log_var)
Sourcepub fn gaussian_to_unit_arrays(mean: &[f32], log_var: &[f32]) -> f32
pub fn gaussian_to_unit_arrays(mean: &[f32], log_var: &[f32]) -> f32
KL(N(mu, sigma^2) || N(0, 1)) from separate arrays
Sourcepub fn gaussian_to_gaussian(q: &DiagonalGaussian, p: &DiagonalGaussian) -> f32
pub fn gaussian_to_gaussian(q: &DiagonalGaussian, p: &DiagonalGaussian) -> f32
KL(N(mu1, sigma1^2) || N(mu2, sigma2^2)) = 0.5 * sum(log(var2/var1) + (var1 + (mu1-mu2)^2)/var2 - 1)
Sourcepub fn categorical(p: &[f32], q: &[f32]) -> f32
pub fn categorical(p: &[f32], q: &[f32]) -> f32
KL divergence between categorical distributions KL(p || q) = sum(p * log(p/q))
Sourcepub fn jensen_shannon(p: &[f32], q: &[f32]) -> f32
pub fn jensen_shannon(p: &[f32], q: &[f32]) -> f32
Symmetric KL (Jensen-Shannon divergence approximation) JS(p, q) ≈ 0.5 * (KL(p || m) + KL(q || m)) where m = (p+q)/2
Trait Implementations§
Source§impl Clone for KLDivergence
impl Clone for KLDivergence
Source§fn clone(&self) -> KLDivergence
fn clone(&self) -> KLDivergence
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 KLDivergence
impl RefUnwindSafe for KLDivergence
impl Send for KLDivergence
impl Sync for KLDivergence
impl Unpin for KLDivergence
impl UnsafeUnpin for KLDivergence
impl UnwindSafe for KLDivergence
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