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 _get_pooling_width(self, xp, dims, dtype):
      width = None
      for d, k, s, p in six.moves.zip(
          dims, self.ksize, self.stride, self.pad
      ):
          starts, ends = _get_conv_slices(
              d,
              k,
              s,
              p,
              cover_all=self.cover_all,
              include_pad=False,
              dtype=dtype,
          )
          w = ends - starts
          if width is None:
              width = w
          else:
              width = numpy.tensordot(
                  width[..., None], w[None, ...], axes=1
              )
      if xp is cuda.cupy:
          width = cuda.cupy.array(width)
      return width
  
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 2 for calling the AveragePoolingND obj's underlying member method code with example usage: obj._get_pooling_width(xp, dims, dtype) and returns: width