code: def _forward_cpu_core(self, x, W, b):
      if self._use_ideep:
          return self._forward_ideep(x, W, b)
  
      kh, kw = W.shape[2:]
      col = conv.im2col_cpu(
          x,
          kh,
          kw,
          self.sy,
          self.sx,
          self.ph,
          self.pw,
          cover_all=self.cover_all,
          dy=self.dy,
          dx=self.dx,
      )
      y = numpy.tensordot(col, W, ((1, 2, 3), (1, 2, 3))).astype(
          x.dtype, copy=False
      )
      if b is not None:
          y += b
      y = numpy.rollaxis(y, 3, 1)
      return (y,)
  
imports: import numpy
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer.backends import intel64
  from chainer import configuration
  from chainer import function_node
  import chainer.functions
  from chainer import memory_layouts
  from chainer.utils import argument
  from chainer.utils import conv
  from chainer.utils import type_check
  import chainerx
label_desc: Use image node_id 8 for calling the Convolution2DFunction obj's underlying member method code with example usage: obj._forward_cpu_core(x, W, b) and returns: y, self