code: def sg_reverse_seq(tensor, opt):
      r
      # default sequence dimension
      opt += tf.sg_opt(axis=1)
      seq_len = tf.not_equal(tensor, tf.zeros_like(tensor)).sg_int().sg_sum(axis=opt.axis)
      return tf.reverse_sequence(tensor, seq_len, opt.axis, name=opt.name)
docs: r"""Reverses variable length slices.
  
      Before applying the pure tensorflow function tf.reverse_sequence,
        this function calculates sequence lengths by counting non-zeros.
  
      For example,
      
      ```
      tensor = [[1, 2, 3, 0, 0], [4, 5, 0, 0, 0]]
      tensor.sg_reverse_seq()
      => [[3 2 1 0 0]
          [5 4 0 0 0]]
      ```
          
      Args:
        tensor: A 2-D `Tensor` (automatically given by chain).
        opt:
          axis: Axis to reverse. Default is 1.
          name : If provided, it replaces current tensor's name.
  
      Returns:
        A `Tensor` with the same shape and type as `tensor`.