code: def sequence_edit_distance(
      predictions, labels, weights_fn=common_layers.weights_nonzero
  ):
      """Average edit distance, ignoring padding 0s.
  
      The score returned is the edit distance divided by the total length of
      reference truth and the weight returned is the total length of the truth.
  
      Args:
        predictions: Tensor of shape [`batch_size`, `length`, 1, `num_classes`] and
            type tf.float32 representing the logits, 0-padded.
        labels: Tensor of shape [`batch_size`, `length`, 1, 1] and type tf.int32
            representing the labels of same length as logits and 0-padded.
        weights_fn: ignored. The weights returned are the total length of the ground
            truth labels, excluding 0-paddings.
  
      Returns:
        (edit distance / reference length, reference length)
  
      Raises:
        ValueError: if weights_fn is not common_layers.weights_nonzero.
      """
      if weights_fn is not common_layers.weights_nonzero:
          raise ValueError(
              "Only weights_nonzero can be used for this metric."
          )
  
      with tf.variable_scope(
          "edit_distance", values=[predictions, labels]
      ):
          # Transform logits into sequence classes by taking max at every step.
          predictions = tf.to_int32(
              tf.squeeze(tf.argmax(predictions, axis=-1), axis=(2, 3))
          )
          nonzero_idx = tf.where(tf.not_equal(predictions, 0))
          sparse_outputs = tf.SparseTensor(
              nonzero_idx,
              tf.gather_nd(predictions, nonzero_idx),
              tf.shape(predictions, out_type=tf.int64),
          )
          labels = tf.squeeze(labels, axis=(2, 3))
          nonzero_idx = tf.where(tf.not_equal(labels, 0))
          label_sparse_outputs = tf.SparseTensor(
              nonzero_idx,
              tf.gather_nd(labels, nonzero_idx),
              tf.shape(labels, out_type=tf.int64),
          )
          distance = tf.reduce_sum(
              tf.edit_distance(
                  sparse_outputs, label_sparse_outputs, normalize=False
              )
          )
          reference_length = tf.to_float(
              common_layers.shape_list(nonzero_idx)[0]
          )
          return distance / reference_length, reference_length
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  import six
  from tensor2tensor.layers import common_layers
  from tensor2tensor.layers import modalities
  from tensor2tensor.utils import bleu_hook
  from tensor2tensor.utils import contrib
  from tensor2tensor.utils import rouge
  from tensor2tensor.utils import sari_hook
  import tensorflow.compat.v1
  from tensorflow.python.util import tf_inspect
label_desc: Use image node_id 14 for calling a global function with example usage: sequence_edit_distance(predictions, labels, weights_fn) and returns: unknown,  reference_length