def summarizeVdToPi(Vd):
''' Calculate summary vector of given doc-topic stick lengths Vd
Returns
--------
sumLogPi : 1D array, size K+1
sumELogPi[k] = \sum_d log pi_{dk}
'''
with warnings.catch_warnings():
warnings.filterwarnings('ignore', category=RuntimeWarning,
message='divide by zero')
logVd = np.log(Vd)
log1mVd = np.log(1 - Vd)
mask = Vd < 1e-15
log1mVd[mask] = np.log1p(-1 * Vd[mask])
assert not np.any(np.isnan(logVd))
logVd = replaceInfVals(logVd)
log1mVd = replaceInfVals(log1mVd)
sumlogVd = np.sum(logVd, axis=0)
sumlog1mVd = np.sum(log1mVd, axis=0)
sumlogPi = np.hstack([sumlogVd, 0])
sumlogPi[1:] += np.cumsum(sumlog1mVd)
return sumlogPi
评论列表
文章目录