class_docstr: Wrap multiple batchify functions together. The input functions will be applied
  to the corresponding input fields.
  
  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
  `Tuple(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
  --------
  >>> import gluonnlp.data.batchify as bf
  >>> a = ([1, 2, 3, 4], 0)
  >>> b = ([5, 7], 1)
  >>> c = ([1, 2, 3, 4, 5, 6, 7], 0)
  >>> f1, f2 = bf.Tuple(bf.Pad(), bf.Stack())([a, b])
  >>> f1
  <BLANKLINE>
  [[1. 2. 3. 4.]
   [5. 7. 0. 0.]]
  <NDArray 2x4 @cpu_shared(0)>
  >>> f2
  <BLANKLINE>
  [0 1]
  <NDArray 2 @cpu_shared(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".format(len(self._fn))
      )
      ret = []
      for i, ele_fn in enumerate(self._fn):
          ret.append(ele_fn([ele[i] for ele in data]))
      return tuple(ret)
  
imports: import warnings
  import math
  from typing import Dict, Callable, NamedTuple, List, Tuple, AnyStr, Union
  import numpy
  import mxnet
  from mxnet.util import is_np_array
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