class_docstr: Upsampling over a set of 2d planes w/ indices used for max pooling.
class_docstr_tok: ["Upsampling","over","a","set","of","2d","planes","w\/","indices","used","for","max","pooling","."]
code: def forward_cpu(self, x):
      self._in_dtype = x[0].dtype
  
      n, c, h, w = x[0].shape
      if self.outh is None:
          self.outh = conv.get_deconv_outsize(
              h, self.kh, self.sy, self.ph, cover_all=self.cover_all
          )
      if self.outw is None:
          self.outw = conv.get_deconv_outsize(
              w, self.kw, self.sx, self.pw, cover_all=self.cover_all
          )
  
      up_y = numpy.zeros(
          (n, c, self.outh, self.outw), dtype=self._in_dtype
      )
      up_y = conv.im2col_cpu(
          up_y,
          self.kh,
          self.kw,
          self.sy,
          self.sx,
          self.ph,
          self.pw,
          cover_all=self.cover_all,
      ).transpose(0, 1, 4, 5, 2, 3)
      colh, colw = up_y.shape[2:4]
      up_y = up_y.reshape(-1, self.kh * self.kw)
      indexes = self.indexes.ravel()
      up_y[numpy.arange(len(indexes)), indexes] = x[0].ravel()
      up_y = up_y.reshape(n, c, colh, colw, self.kh, self.kw)
      up_y = conv.col2im_cpu(
          up_y.transpose(0, 1, 4, 5, 2, 3),
          self.sy,
          self.sx,
          self.ph,
          self.pw,
          self.outh,
          self.outw,
      )
      return (up_y,)
  
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 3 for calling the Upsampling2D obj's underlying member method code with example usage: obj.forward_cpu(x) and returns: up_y