简体   繁体   中英

How to understand the 'viterbi_decode' in tensorflow

The traditional viterbi algorithm using in HMM has a start probability matrix( viterbi algorithm wiki ), but the params of viterbi_decode in tensorflow only need transition probability matrix and emission probability matrix . How to understand it?

def viterbi_decode(score, transition_params):
  """Decode the highest scoring sequence of tags outside of 
  TensorFlow.

  This should only be used at test time.

  Args:
    score: A [seq_len, num_tags] matrix of unary potentials.
    transition_params: A [num_tags, num_tags] matrix of binary potentials.

  Returns:
    viterbi: A [seq_len] list of integers containing the highest scoring tag
    indicies.
    viterbi_score: A float containing the score for the Viterbi 
    sequence.
  """

The viterbi algorithm in Tensorflow doesn't need an initial probability matrix because it starts decoding by giving zero probability to all states.

This means that it starts at state 0.

You can check out the implementation here .

I have created full detailed tutorial with example about viterbi algorithm with tensorflow , You can take a look here :

Suppose if your data looks like:

# logits :       A [batch_size, max_seq_len, num_tags] tensor of unary potentials to use as input to the CRF layer.

# labels_a :     A [batch_size, max_seq_len] matrix of tag indices for which we compute the log-likelihood.

# sequence_len : A [batch_size] vector of true sequence lengths.

Then

log_likelihood , transition_params = tf.contrib.crf.crf_log_likelihood(logits,labels_a,sequence_len)

#return of crf log_likelihood function

# log_likelihood: A scalar containing the log-likelihood of the given sequence of tag indices.

# transition_params: A [num_tags, num_tags] transition matrix. 

# This is either provided by the caller or created in this function.

Now we can calculate viterbi score:

# score: A [seq_len, num_tags] matrix of unary potentials.
# transition_params: A [num_tags, num_tags] matrix of binary potentials.

Notebook Link

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM