def _E_logdetL(self, k=None):
dvec = np.arange(1, self.D + 1, dtype=np.float)
if k == 'all':
dvec = dvec[:, np.newaxis]
retVec = self.D * LOGTWO * np.ones(self.K)
for kk in xrange(self.K):
retVec[kk] -= self.GetCached('logdetB', kk)
nuT = self.Post.nu[np.newaxis, :]
retVec += np.sum(digamma(0.5 * (nuT + 1 - dvec)), axis=0)
return retVec
elif k is None:
nu = self.Prior.nu
else:
nu = self.Post.nu[k]
return self.D * LOGTWO \
- self.GetCached('logdetB', k) \
+ np.sum(digamma(0.5 * (nu + 1 - dvec)))
评论列表
文章目录