class_docstr: Unpooling over a set of N-dimensional planes.
  
  .. warning::
  
      This feature is experimental. The interface can change in the future.
code: def forward(self, x):
      self.retain_inputs(())
  
      dims = x[0].shape[2:]
      ndim = self.ndim
      ksize = self.ksize
      stride = self.stride
      pad = self.pad
      if self.outs is None:
          self.outs = tuple(
              conv.get_deconv_outsize(
                  d, k, s, p, cover_all=self.cover_all
              )
              for (d, k, s, p) in six.moves.zip(
                  dims, ksize, stride, pad
              )
          )
  
      xp = backend.get_array_module(*x)
  
      colon = slice(None)
      # (:, :, None, None, ..., None)
      tile_index = (colon, colon) + (None,) * ndim
      # (1, 1, k_1, k_2, ..., k_n, 1, 1, ..., 1)
      tile_reps = (1, 1) + ksize + (1,) * ndim
      col = xp.tile(x[0][tile_index], tile_reps)
  
      if xp is numpy:
          col2im_nd = conv_nd.col2im_nd_cpu
      else:
          col2im_nd = conv_nd.col2im_nd_gpu
      y = col2im_nd(col, stride, pad, self.outs)
  
      return (y,)
  
imports: import numpy
  import six
  from chainer import backend
  from chainer import function_node
  from chainer.functions.pooling import pooling_nd
  from chainer.utils import conv
  from chainer.utils import conv_nd
  from chainer.utils import type_check
label_desc: Use image node_id 3 for calling the UnpoolingND obj's underlying member method code with example usage: obj.forward(x) and returns: y