class_docstr: Average pooling over a set of 2d planes.
code: def _forward_ideep(self, x):
      self._in_shape = x[0].shape
      self._in_dtype = x[0].dtype
      self.retain_inputs((0,))
  
      n, c, h, w = x[0].shape
      y_h = conv.get_conv_outsize(
          h, self.kh, self.sy, self.ph, self.cover_all
      )
      assert y_h > 0, "Height in the output should be positive."
      y_w = conv.get_conv_outsize(
          w, self.kw, self.sx, self.pw, self.cover_all
      )
      assert y_w > 0, "Width in the output should be positive."
      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(
          (n, c, y_h, y_w),
          self.kh,
          self.kw,
          self.sy,
          self.sx,
          self.ph,
          self.pw,
          pd,
          pr,
          intel64.ideep.pooling2DParam.pooling_avg_include_padding,
      )
      (y,) = intel64.ideep.pooling2D.Forward(
          intel64.ideep.array(x[0]), pp
      )
      return (y,)
  
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 2 for calling the AveragePooling2D obj's underlying member method code with example usage: obj._forward_ideep(x) and returns: y