centroids = init_centroids.clone() states = [] for s_idx in range(n_states): precisions = torch.ones(2) states.append(DiagNormalModel(centroids[s_idx], precisions)) hmm = HiddenMarkovModel(states, T0=T0, T=T) converged = hmm.fit(X, epsilon=1e-8) print() print('CONVERGED', converged) print() score = hmm.log_prob(X) # + hmm.log_parameters_prob() print('ll', score) # print('ll (no prior)', hmm.log_prob(X)) print("Pi Matrix: ") print(hmm.T0) # print("Transition Matrix: ") # print(hmm.T) # assert np.allclose(transition.exp().data.numpy(), True_T, atol=0.1) # print() # print("Emission Matrix: ") # for s in hmm.states: # print("Means") # print(list(s.parameters())[0])