code: def forward_cpu(self, gy):
      gcol = conv.im2col_cpu(
          gy[0],
          self.kh,
          self.kw,
          self.sy,
          self.sx,
          self.ph,
          self.pw,
          cover_all=self.cover_all,
      )
      n, c, kh, kw, out_h, out_w = gcol.shape
      gcol = gcol.transpose(0, 1, 4, 5, 2, 3).reshape(-1, kh * kw)
      indexes = self.indexes.ravel()
      gx = gcol[numpy.arange(len(indexes)), indexes]
      return (gx.reshape(n, c, out_h, out_w),)
  
imports: import numpy
  from chainer.backends import cuda
  from chainer import function_node
  from chainer.functions.pooling import pooling_2d
  from chainer.utils import conv
  from chainer.utils import type_check
label_desc: Use image node_id 2 for calling the Upsampling2DGrad obj's underlying member method code with example usage: obj.forward_cpu(gy) and returns: gx