1

我已经使用 HMMlearn 库来执行手势识别,并且在某些手势中我想使用遍历拓扑,而在其他的从左到右的拓扑中。HMM 架构内的拓扑是否由“协方差”参数设置为“完整”或“诊断”或我需要定义其他内容?

4

1 回答 1

1

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

如他们的文档中所述

转移概率矩阵不必是遍历的。例如,一个左右 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_ 中生成的值将被锁存。这里的 hack 是这里的任何 0 都不会被训练,并且在更新中总是 0,所以你强制拓扑为 ltr。

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

于 2020-03-16T23:44:11.303 回答