code: 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
              indices.
          viterbi_score: A float containing the score for the Viterbi sequence.
      """
      trellis = np.zeros_like(score)
      backpointers = np.zeros_like(score, dtype=np.int32)
      trellis[0] = score[0]
  
      for t in range(1, score.shape[0]):
          v = np.expand_dims(trellis[t - 1], 1) + transition_params
          trellis[t] = score[t] + np.max(v, 0)
          backpointers[t] = np.argmax(v, 0)
  
      viterbi = [np.argmax(trellis[-1])]
      for bp in reversed(backpointers[1:]):
          viterbi.append(bp[viterbi[-1]])
      viterbi.reverse()
  
      return viterbi, np_softmax(trellis, axis=-1)
  
imports: import numpy
  import tensorflow
  import tensorflow_addons
label_desc: Use image node_id 2 for calling a global function with example usage: viterbi_decode(score, transition_params) and returns: viterbi,  np_softmax