class_docstr: Pad all dimensions except the first ``batch_ndim`` with ``width``
  zeros on both sides, or with another value specified in ``val``.
  Individual padding for each dimension or edge can be specified
  using a tuple or list of tuples for ``width``.
  
  Parameters
  ----------
  incoming : a :class:`Layer` instance or a tuple
      The layer feeding into this layer, or the expected input shape
  
  width : int, iterable of int, or iterable of tuple
      Padding width. If an int, pads each axis symmetrically with the same
      amount in the beginning and end. If an iterable of int, defines the
      symmetric padding width separately for each axis. If an iterable of
      tuples of two ints, defines a seperate padding width for each beginning
      and end of each axis.
  
  val : float
      Value used for padding
  
  batch_ndim : int
      Dimensions up to this value are not padded. For padding convolutional
      layers this should be set to 2 so the sample and filter dimensions are
      not padded
code: def __init__(self, incoming, width, val=0, batch_ndim=2, **kwargs):
      super(PadLayer, self).__init__(incoming, **kwargs)
      self.width = width
      self.val = val
      self.batch_ndim = batch_ndim
  
imports: import numpy
  import theano.tensor
  from ..theano_extensions import padding
  from ..utils import int_types
  from .base import Layer
label_desc: Use image node_id 1 to create a new PadLayer object from inherited base classes: Layer with example: obj = PadLayer(incoming, width, val, batch_ndim)