def _set_transmat(self, transmat):
if transmat is None:
transmat = np.ones(shape=(self.n_partial_states, self.n_partial_states, self.n_hidden_states,
self.n_hidden_states)) / self.n_hidden_states
# check if there exists a component whose value is exactly zero
# if so, add a small number and re-normalize
if not np.alltrue(transmat):
transmat = normalize(transmat, axis=3)
if (np.asarray(transmat).shape
!= (self.n_partial_states, self.n_partial_states, self.n_hidden_states, self.n_hidden_states)):
raise ValueError('transmat must have shape '
'(n_partial_states,n_partial_states,n_hidden_states,n_hidden_states)')
if not np.all(np.allclose(np.sum(transmat, axis=3), 1.0)):
raise ValueError('Rows of transmat must sum to 1.0')
self._log_transmat = np.log(np.asarray(transmat).copy())
underflow_idx = np.isnan(self._log_transmat)
self._log_transmat[underflow_idx] = NEGINF
评论列表
文章目录