HMMlearn 库 - 遍历和从左到右的拓扑

HMMlearn library -ergodic and left-to-right topology

我已经使用 HMMlearn 库执行手势识别,在某些手势中我想使用遍历拓扑,而在其他手势中我想使用从左到右的拓扑。 'covariance' 参数定义的 HMM 架构中的拓扑是否设置为 'full' 或 'diag' 还是我需要定义其他内容?

我不知道我的回答是否晚了,但可能会有所帮助。

如他们的文档所述

The transition probability matrix need not to be ergodic. For instance, a left-right HMM can be defined as follows:

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]])

这里你强制模型学习params 'cmt'代表co-variance,mean和transition matrix,所以startprob永远不会改变。但是你通知(通过传递 init_params)它只是为了自己初始化协方差和平均值,所以你在 startprob 和 transmat_ 中所做的值将被锁定。 这里的 hack 是 any 0 这里不会被训练并且在更新中总是 0,所以你强制拓扑是 ltr.

covariance full 或 diag 与拓扑完全无关。它与您对功能的了解有关。例如,在 diag 中,您说所有功能都是完全独立的,因此它们的协方差为 0