class_docstr: Average pooling over a set of N-dimensional planes.
  
  .. warning::
  
      This feature is experimental. The interface can change in the future.
code: def forward_cpu(self, inputs):
      ksize = self.ksize
      stride = self.stride
      pad = self.pad
      pad_value = self.pad_value
      cover_all = self.cover_all
  
      (x,) = inputs
      in_shape = x.shape
      in_dtype = x.dtype
  
      col = conv_nd.im2col_nd_cpu(
          x, ksize, stride, pad, cover_all=cover_all
      )
  
      # mean along (_, _, k_1, k_2, ..., k_N, _, ..., _)
      y_axis = tuple(six.moves.range(2, 2 + len(ksize)))
      if pad_value is None:
          dims = x.shape[2:]
          width = self._get_pooling_width(numpy, dims, x.dtype)
          y = col.sum(axis=y_axis) / width
      else:
          assert pad_value == 0
          y = col.mean(axis=y_axis)
          width = None
  
      self.width = width
      self._in_shape = in_shape
      self._in_dtype = in_dtype
      return (y,)
  
imports: import functools
  import operator
  import numpy
  import six
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function_node
  from chainer.functions.pooling import average_pooling_nd_kernel
  from chainer.functions.pooling import pooling_nd
  from chainer.utils import conv
  from chainer.utils import conv_nd
  import chainerx
label_desc: Use image node_id 4 for calling the AveragePoolingND obj's underlying member method code with example usage: obj.forward_cpu(inputs) and returns: y