class_docstr: Seq2Seq model for sequence processing in O(n log n) time.
docstr: We add padding to the input and output so they are the same.
  
  Length of input and output should be power of 2.
  
  Args:
    features: Dictionary of inputs and targets
  
  Returns:
    dictionary: Inputs and targets padded with 0 to the length of power of 2.
    Both are same length.
docstr_tok: ["We","add","padding","to","the","input","and","output","so","they","are","the","same",".","Length","of","input","and","output","should","be","power","of","2",".","Args",":","features",":","Dictionary","of","inputs","and","targets","Returns",":","dictionary",":","Inputs","and","targets","padded","with","0","to","the","length","of","power","of","2",".","Both","are","same","length","."]
code: def bottom(self, features):
      """We add padding to the input and output so they are the same.
  
      Length of input and output should be power of 2.
  
      Args:
        features: Dictionary of inputs and targets
  
      Returns:
        dictionary: Inputs and targets padded with 0 to the length of power of 2.
        Both are same length.
      """
      pad_len = self.max_pad_length(features)
      features["inputs"] = self.pad(features["inputs"], pad_len)
  
      if features.get("targets") is not None:
          features["targets"] = self.pad(features["targets"], pad_len)
  
      return super(ShuffleNetwork, self).bottom(features)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  from tensor2tensor.layers import common_hparams
  from tensor2tensor.utils import registry
  from tensor2tensor.utils import t2t_model
  import tensorflow.compat.v1
  from tensorflow.compat.v1 import estimator
label_desc: Use image node_id 1 for calling the ShuffleNetwork obj's underlying member method code with example usage: obj.bottom(features) and returns: super