code: def __init__(self, in_channels, feat_size, pyramids, initialW=None):
      out_channels = in_channels // len(pyramids)
      super(PyramidPoolingModule, self).__init__(
          Conv2DBNActiv(
              in_channels, out_channels, 1, 1, 0, 1, initialW=initialW
          ),
          Conv2DBNActiv(
              in_channels, out_channels, 1, 1, 0, 1, initialW=initialW
          ),
          Conv2DBNActiv(
              in_channels, out_channels, 1, 1, 0, 1, initialW=initialW
          ),
          Conv2DBNActiv(
              in_channels, out_channels, 1, 1, 0, 1, initialW=initialW
          ),
      )
      kh = feat_size[0] // np.array(pyramids)
      kw = feat_size[1] // np.array(pyramids)
      self.ksizes = list(zip(kh, kw))
  
imports: from __future__ import division
  from math import ceil
  import numpy
  import chainer
  import chainer.functions
  from chainer import initializers
  import chainer.links
  from chainercv.experimental.links.model.pspnet.transforms import convolution_crop
  from chainercv.links import Conv2DBNActiv
  from chainercv.links.model.resnet import ResBlock
  from chainercv.links import PickableSequentialChain
  from chainercv import transforms
  from chainercv import utils
label_desc: Use image node_id 1 to create a new PyramidPoolingModule object from inherited base classes: chainer with example: obj = PyramidPoolingModule(in_channels, feat_size, pyramids, initialW)