class_docstr: Abstract two-dimensional layer that downsamples values in a kernel to a single value.
  
  Parameters
  ----------
  input_size : tuple
      the size of the input.
  output_size : tuple
      the size of the output.
  strides : matrix-like
      stride of the kernel.
  activation : str or None
      activation function name
  input_index_mapper : IndexMapper or None
      map indexes from this layer index to the input layer index size
code: def _eval(self, x):
      y = np.empty(shape=self.output_size)
      if len(self.output_size) != 3:
          raise ValueError(
              f"Output should have 3 dimensions but instead has {len(self.output_size)}"
          )
      [depth, rows, cols] = list(self.output_size)
      for out_d in range(depth):
          for out_r in range(rows):
              for out_c in range(cols):
                  y[out_d, out_r, out_c] = self._eval_at_index(
                      x, out_d, out_r, out_c
                  )
      return y
  
imports: import itertools
  import numpy
label_desc: Use image node_id 7 for calling the Layer2D obj's underlying member method code with example usage: obj._eval(x) and returns: y