def _expected_statistics_from_messages_slow(trans_potential,likelihood_log_potential,alphal,betal):
expected_states = alphal + betal
expected_states -= expected_states.max(1)[:,na]
np.exp(expected_states,out=expected_states)
expected_states /= expected_states.sum(1)[:,na]
Al = np.log(trans_potential)
log_joints = alphal[:-1,:,na] + (betal[1:,na,:] + likelihood_log_potential[1:,na,:]) + Al[na,...]
log_joints -= log_joints.max((1,2))[:,na,na]
joints = np.exp(log_joints)
joints /= joints.sum((1,2))[:,na,na] # NOTE: renormalizing each isnt really necessary
expected_transcounts = joints.sum(0)
normalizer = np.logaddexp.reduce(alphal[0] + betal[0])
return expected_states, expected_transcounts, normalizer
### EM
评论列表
文章目录