code: def retrieve_seq_length_op(data):
      
      with tf.name_scope('GetLength'):
          used = tf.sign(tf.reduce_max(tf.abs(data), 2))
          length = tf.reduce_sum(used, 1)
  
          return tf.cast(length, tf.int32)
docs: An op to compute the length of a sequence from input shape of [batch_size, n_step(max), n_features],
      it can be used when the features of padding (on right hand side) are all zeros.
  
      Parameters
      -----------
      data : tensor
          [batch_size, n_step(max), n_features] with zero padding on right hand side.
  
      Examples
      ---------
      >>> data = [[[1],[2],[0],[0],[0]],
      ...         [[1],[2],[3],[0],[0]],
      ...         [[1],[2],[6],[1],[0]]]
      >>> data = np.asarray(data)
      >>> print(data.shape)
      (3, 5, 1)
      >>> data = tf.constant(data)
      >>> sl = retrieve_seq_length_op(data)
      >>> sess = tf.InteractiveSession()
      >>> tl.layers.initialize_global_variables(sess)
      >>> y = sl.eval()
      [2 3 4]
  
      Multiple features
      >>> data = [[[1,2],[2,2],[1,2],[1,2],[0,0]],
      ...         [[2,3],[2,4],[3,2],[0,0],[0,0]],
      ...         [[3,3],[2,2],[5,3],[1,2],[0,0]]]
      >>> print(sl)
      [4 3 4]
  
      References
      ------------
      Borrow from `TFlearn <https://github.com/tflearn/tflearn/blob/master/tflearn/layers/recurrent.py>`__.