code: def forward(self, input):
      input = T.Pad(input.shape[2] // 4, fill=0)(input)
      sideY, sideX = input.shape[2:4]
      max_size = min(sideX, sideY)
  
      cutouts = []
      for ch in range(self.cutn):
          if ch > self.cutn - self.cutn // 4:
              cutout = input.clone()
          else:
              size = int(
                  max_size
                  * paddle.zeros(
                      1,
                  )
                  .normal_(mean=0.8, std=0.3)
                  .clip(float(self.cut_size / max_size), 1.0)
              )
              offsetx = paddle.randint(0, abs(sideX - size + 1), ())
              offsety = paddle.randint(0, abs(sideY - size + 1), ())
              cutout = input[
                  :,
                  :,
                  offsety : offsety + size,
                  offsetx : offsetx + size,
              ]
  
          if not self.skip_augs:
              cutout = self.augs(cutout)
          cutouts.append(
              resample(cutout, (self.cut_size, self.cut_size))
          )
          del cutout
  
      cutouts = paddle.concat(cutouts, axis=0)
      return cutouts
  
file_path: PaddleHub/modules/image/text_to_image/disco_diffusion_ernievil_base/reverse_diffusion/model/make_cutouts.py
imports: import math
  import paddle
  import paddle.nn
  from disco_diffusion_ernievil_base.resize_right.resize_right import resize
  from paddle.nn import functional
  from .None import transforms
label_desc: Use image node_id 2 for calling the MakeCutouts obj's underlying member method code with example usage: obj.forward(input) and returns: cutouts