code: def _forward_ideep(self, gy):
      n, c, h, w = self._in_shape
      y_h, y_w = gy[0].shape[2:]
      (x,) = self.apool2d.get_retained_inputs()
  
      pd = self.sy * (y_h - 1) + self.kh - h - self.ph
      pr = self.sx * (y_w - 1) + self.kw - w - self.pw
  
      pp = intel64.ideep.pooling2DParam(
          self._in_shape,
          self.kh,
          self.kw,
          self.sy,
          self.sx,
          self.ph,
          self.pw,
          pd,
          pr,
          intel64.ideep.pooling2DParam.pooling_avg_include_padding,
      )
      gx = intel64.ideep.pooling2D.Backward(
          intel64.ideep.array(x.data),
          intel64.ideep.array(gy[0]),
          None,
          pp,
      )
      return (gx,)
  
imports: import numpy
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer.backends import intel64
  from chainer import function_node
  from chainer.functions.pooling import average_pooling_nd
  from chainer.functions.pooling import pooling_2d
  from chainer.utils import conv
  import chainerx
label_desc: Use image node_id 3 for calling the AveragePooling2DGrad obj's underlying member method code with example usage: obj._forward_ideep(gy) and returns: gx