Библиотека HMMlearn -ergodi c и топология слева направо - PullRequest
0 голосов
/ 22 января 2020

Я использовал библиотеку HMMlearn для распознавания жестов, и в некоторых жестах я хотел бы использовать топологию ergodi c, а в другой - слева направо. Топология внутри архитектуры HMM определяется параметрами 'covariance', установленными в 'full' или 'diag', или есть что-то еще, что мне нужно определить?

1 Ответ

0 голосов
/ 17 марта 2020

Я не знаю, опоздал ли мой ответ, но может помочь.

Как указано в их документации

Матрица вероятности перехода не обязательно должна быть эргоди c. Например, левый-правый HMM может быть определен следующим образом:

lr = hmm.GaussianHMM(n_components=3, covariance_type="diag",
                  init_params="cm", params="cmt")
lr.startprob_ = np.array([1.0, 0.0, 0.0])
lr.transmat_ = np.array([[0.5, 0.5, 0.0],
                          [0.0, 0.5, 0.5],
                        [0.0, 0.0, 1.0]])

Здесь вы заставили модель выучить параметры. Cmt обозначает ковариантность, среднее значение и матрицу перехода, поэтому startprob никогда не изменится. но вы информируете (передавая init_params), что он просто инициализирует ко-дисперсию и средние значения, так что ваши значения, которые вы задаете в startprob и transmat_, будут зафиксированы. хак здесь любой 0 здесь не будет обучаться и всегда будет 0 в обновлениях, поэтому вы заставляете топологию быть ltr.

ковариация полная или diag вообще не связана с топологией. это связано со знанием ваших возможностей. в Diag для примера вы говорите, что все функции полностью независимы, поэтому они имеют 0-дисперсию

...