class_docstr: Unpooling over a set of 2d planes.
code: def check_type_forward(self, in_types):
      n_in = in_types.size()
      type_check.expect(n_in == 1)
      x_type = in_types[0]
  
      type_check.expect(
          x_type.dtype.kind == "f",
          x_type.ndim == 4,
      )
  
      if self.outh is not None:
          expected_h = conv.get_conv_outsize(
              self.outh,
              self.kh,
              self.sy,
              self.ph,
              cover_all=self.cover_all,
          )
          type_check.expect(x_type.shape[2] == expected_h)
      if self.outw is not None:
          expected_w = conv.get_conv_outsize(
              self.outw,
              self.kw,
              self.sx,
              self.pw,
              cover_all=self.cover_all,
          )
          type_check.expect(x_type.shape[3] == expected_w)
  
imports: import numpy
  import numpy.lib.stride_tricks
  from chainer import backend
  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 Unpooling2D obj's underlying member method code with example usage: obj.check_type_forward(in_types) without return types