class_docstr: Wrap multiple batchify functions to form a function apply each input function on each
  input fields respectively.
  Each data sample should be a list or tuple containing multiple attributes. The `i`th batchify
  function stored in `Tuple` will be applied on the `i`th attribute. For example, each
  data sample is (nd_data, label). You can wrap two batchify functions using
  `Wrap(DataBatchify, LabelBatchify)` to batchify nd_data and label correspondingly.
  Parameters
  ----------
  fn : list or tuple or callable
      The batchify functions to wrap.
  *args : tuple of callable
      The additional batchify functions to wrap.
  Examples
  --------
  >>> from gluoncv.data import batchify
  >>> a = ([1, 2, 3, 4], 0)
  >>> b = ([5, 7], 1)
  >>> c = ([1, 2, 3, 4, 5, 6, 7], 0)
  >>> batchify.Tuple(batchify.Pad(), batchify.Stack())([a, b])
  (
   [[1 2 3 4]
    [5 7 0 0]]
   <NDArray 2x4 @cpu(0)>,
   [0. 1.]
   <NDArray 2 @cpu(0)>)
  >>> # Input can also be a list
  >>> batchify.Tuple([batchify.Pad(), batchify.Stack()])([a, b])
  (
   [[1 2 3 4]
    [5 7 0 0]]
   <NDArray 2x4 @cpu(0)>,
   [0. 1.]
   <NDArray 2 @cpu(0)>)
  >>> # Another example
  >>> a = ([1, 2, 3, 4], [5, 6], 1)
  >>> b = ([1, 2], [3, 4, 5, 6], 0)
  >>> c = ([1], [2, 3, 4, 5, 6], 0)
  >>> batchify.Tuple(batchify.Pad(), batchify.Pad(), batchify.Stack())([a, b, c])
  (
   [[1 2 3 4]
    [1 2 0 0]
    [1 0 0 0]]
   <NDArray 3x4 @cpu(0)>,
   [[5 6 0 0 0]
    [3 4 5 6 0]
    [2 3 4 5 6]]
   <NDArray 3x5 @cpu(0)>,
   [1. 0. 0.]
   <NDArray 3 @cpu(0)>)
class_docstr_tok: ["Wrap","multiple","batchify","functions","to","form","a","function","apply","each","input","function","on","each","input","fields","respectively",".","Each","data","sample","should","be","a","list","or","tuple","containing","multiple","attributes",".","The","`","i","`","th","batchify","function","stored","in","`","Tuple","`","will","be","applied","on","the","`","i","`","th","attribute",".","For","example",",","each","data","sample","is","(","nd_data",",","label",")",".","You","can","wrap","two","batchify","functions","using","`","Wrap","(","DataBatchify",",","LabelBatchify",")","`","to","batchify","nd_data","and","label","correspondingly",".","Parameters","--","--","--","--","--","fn",":","list","or","tuple","or","callable","The","batchify","functions","to","wrap",".","*","args",":","tuple","of","callable","The","additional","batchify","functions","to","wrap",".","Examples","--","--","--","--",">",">",">","from","gluoncv.data","import","batchify",">",">",">","a","=","(","[","1",",","2",",","3",",","4","]",",","0",")",">",">",">","b","=","(","[","5",",","7","]",",","1",")",">",">",">","c","=","(","[","1",",","2",",","3",",","4",",","5",",","6",",","7","]",",","0",")",">",">",">","batchify.Tuple","(","batchify.Pad","(",")",",","batchify.Stack","(",")",")","(","[","a",",","b","]",")","(","[","[","1","2","3","4","]","[","5","7","0","0","]","]","<","NDArray","2x4","@","cpu","(","0",")",">",",","[","0",".","1",".","]","<","NDArray","2","@","cpu","(","0",")",">",")",">",">",">","#","Input","can","also","be","a","list",">",">",">","batchify.Tuple","(","[","batchify.Pad","(",")",",","batchify.Stack","(",")","]",")","(","[","a",",","b","]",")","(","[","[","1","2","3","4","]","[","5","7","0","0","]","]","<","NDArray","2x4","@","cpu","(","0",")",">",",","[","0",".","1",".","]","<","NDArray","2","@","cpu","(","0",")",">",")",">",">",">","#","Another","example",">",">",">","a","=","(","[","1",",","2",",","3",",","4","]",",","[","5",",","6","]",",","1",")",">",">",">","b","=","(","[","1",",","2","]",",","[","3",",","4",",","5",",","6","]",",","0",")",">",">",">","c","=","(","[","1","]",",","[","2",",","3",",","4",",","5",",","6","]",",","0",")",">",">",">","batchify.Tuple","(","batchify.Pad","(",")",",","batchify.Pad","(",")",",","batchify.Stack","(",")",")","(","[","a",",","b",",","c","]",")","(","[","[","1","2","3","4","]","[","1","2","0","0","]","[","1","0","0","0","]","]","<","NDArray","3x4","@","cpu","(","0",")",">",",","[","[","5","6","0","0","0","]","[","3","4","5","6","0","]","[","2","3","4","5","6","]","]","<","NDArray","3x5","@","cpu","(","0",")",">",",","[","1",".","0",".","0",".","]","<","NDArray","3","@","cpu","(","0",")",">",")"]
docstr: Batchify the input data.
  
  Parameters
  ----------
  data : list
      The samples to batchfy. Each sample should contain N attributes.
  Returns
  -------
  ret : tuple
      A tuple of length N. Contains the batchified result of each attribute in the input.
docstr_tok: ["Batchify","the","input","data",".","Parameters","--","--","--","--","--","data",":","list","The","samples","to","batchfy",".","Each","sample","should","contain","N","attributes",".","Returns","--","--","--","-","ret",":","tuple","A","tuple","of","length","N.","Contains","the","batchified","result","of","each","attribute","in","the","input","."]
code: def __call__(self, data):
      """Batchify the input data.
  
      Parameters
      ----------
      data : list
          The samples to batchfy. Each sample should contain N attributes.
      Returns
      -------
      ret : tuple
          A tuple of length N. Contains the batchified result of each attribute in the input.
      """
      assert len(data[0]) == len(self._fn), (
          "The number of attributes in each data sample should contains"
          " {} elements, given {}.".format(len(self._fn), len(data[0]))
      )
      ret = []
      for i, ele_fn in enumerate(self._fn):
          ret.append(ele_fn([ele[i] for ele in data]))
      return tuple(ret)
  
imports: import logging
  import numpy
  import mxnet
label_desc: Use image node_id 2 for calling the Tuple obj's underlying member method code with example usage: obj.__call__(data) and returns: tuple