def calc_lower_ll(self):
g = digamma(self.gamma) - digamma(self.gamma.sum(axis=1)[:, np.newaxis])
N = self._data.nsamples
psi_d = np.exp(self.log_psi + self._data.log_d[:, :, :, np.newaxis])
ll = self.ll_offset
ll += (psi_d.sum(axis=0) * self.log_beta).sum()
ll += (psi_d.sum(axis=1).sum(axis=1) * g).sum()
ll += N * (gammaln(self.alpha.sum()) - gammaln(self.alpha).sum()) + (self.alpha * g.sum(axis=0)).sum()
ll -= (gammaln(self.gamma.sum(axis=1)) - gammaln(self.gamma).sum(axis=1) + (self.gamma * g).sum(axis=1)).sum()
ll -= (psi_d * self.log_psi).sum()
return ll
评论列表
文章目录