微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

维特比回溯

如何解决维特比回溯

def viterbi(hmm,obs):
    # initialize empty Matrix
    V = []
    B = []
    N = len(hmm.states)
    T = len(obs)

    #initialize
    for q in range(1,N-1):
        V[q][1] = (hmm.trans_prob[0][q] * hmm.obs_likelihood[q][1])
        B[q][1] = 0
    #get probability for each state 
    for t in range(2,T):
        for q in range(1,N-1):
            V[q][t] = V[q][t-1] * hmm.trans_prob[q][q] * hmm.obs_likelihood[q][t]
            B[q][t] = V[q][t-1].argmax() * hmm.trans_prob[q][q] * hmm.obs_likelihood[q][t]

    bestpathprob = max(V[N-1][T])
    bestpathpointer = V[N-1][T].argmax()
    return bestpathpointer

如何为Viterbi函数实现回溯?回溯需要获得viterbi [(从1到N)] [T]

的最大值

viterbi algorithm

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。