def kl_recog_prior(self, stt): if stt.ndim == 3: stt_flat = wild_reshape(stt, (-1, stt.shape[2])) else: stt_flat = stt mean, var = stt_flat[:, :stt_flat.shape[1] // 2], stt_flat[:, stt_flat.shape[1] // 2:] kl = inter_gauss_kl(mean, var, 1e-4) if stt.ndim == 3: kl = recover_time(kl, stt.shape[0]) return kl
def gauss_normalgauss_kl(p, q): kl = inter_gauss_kl(p.mean, p.var, var_offset=1e-4) return kl
def gauss_gauss_kl(p, q): kl = inter_gauss_kl(p.mean, p.var, q.mean, q.var) return kl