class_docstr: Return a callable that pads and stacks data.
  
  Parameters
  ----------
  val : float or int, default 0
      The padding value.
  axis : int, default 0
      The axis to pad the arrays. The arrays will be padded to the largest dimension at
      `axis`. For example, assume the input arrays have shape
      (10, 8, 5), (6, 8, 5), (3, 8, 5) and the `axis` is 0. Each input will be padded into
      (10, 8, 5) and then stacked to form the final output, which has shape（3, 10, 8, 5).
  dtype : str or numpy.dtype, default None
      The value type of the output. If it is set to None, the input data type is used.
  round_to : int, default None
      If specified, the padded dimension will be rounded to be multiple of this argument.
  
  Examples
  --------
  >>> import gluonnlp.batchify as bf
  >>> # Inputs are multiple lists
  >>> a = [1, 2, 3, 4]
  >>> b = [4, 5, 6]
  >>> c = [8, 2]
  >>> bf.Pad()([a, b, c])
  <BLANKLINE>
  [[1. 2. 3. 4.]
   [4. 5. 6. 0.]
   [8. 2. 0. 0.]]
  <NDArray 3x4 @cpu_shared(0)>
  >>> # Inputs are multiple numpy ndarrays
  >>> a = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
  >>> b = np.array([[5, 8], [1, 2]])
  >>> bf.Pad(axis=1, val=-1)([a, b])
  <BLANKLINE>
  [[[ 1  2  3  4]
    [ 5  6  7  8]]
  <BLANKLINE>
   [[ 5  8 -1 -1]
    [ 1  2 -1 -1]]]
  <NDArray 2x2x4 @cpu_shared(0)>
code: def __init__(self, val=0, axis=0, dtype=None, round_to=None):
      self._axis = axis
      assert isinstance(
          axis, int
      ), "axis must be an integer! " "Received axis=%s, type=%s." % (
          str(axis),
          str(type(axis)),
      )
      self._val = val
      self._dtype = dtype
      self._warned = False
      self._round_to = round_to
  
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 1 to create a new Pad object  with example: obj = Pad(val, axis, dtype, round_to)