code: def forward(self, gy):
      xp = backend.get_array_module(*gy)
      if xp is numpy:
          im2col_nd = conv_nd.im2col_nd_cpu
      else:
          im2col_nd = conv_nd.im2col_nd_gpu
      gcol = im2col_nd(
          gy[0],
          self.ksize,
          self.stride,
          self.pad,
          cover_all=self.cover_all,
      )
      gcol_axis = tuple(six.moves.range(2, 2 + self.ndim))
      gx = gcol.sum(axis=gcol_axis)
      return (gx,)
  
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 2 for calling the UnpoolingNDGrad obj's underlying member method code with example usage: obj.forward(gy) and returns: gx