class_docstr: Base layer class.
  
  Parameters
  ----------
  input_size : list
      size of the layer input
  output_size : list
      size of the layer output
  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
docstr: Evaluate the layer at x.
  
  Parameters
  ----------
  x : array-like
      the input tensor. Must have size `self.input_size`.
docstr_tok: ["Evaluate","the","layer","at","x.","Parameters","--","--","--","--","--","x",":","array-like","the","input","tensor",".","Must","have","size","`","self.input_size","`","."]
code: def eval_single_layer(self, x):
      """
      Evaluate the layer at x.
  
      Parameters
      ----------
      x : array-like
          the input tensor. Must have size `self.input_size`.
      """
      x_reshaped = (
          np.reshape(x, self.__input_index_mapper.output_size)
          if self.__input_index_mapper is not None
          else x[:]
      )
      if x_reshaped.shape != tuple(self.input_size):
          raise ValueError(
              f"Layer requires an input size {self.input_size}, but the input tensor had size {x_reshaped.shape}."
          )
      y = self._eval(x_reshaped)
      return self._apply_activation(y)
  
imports: import itertools
  import numpy
label_desc: Use image node_id 10 for calling the Layer obj's underlying member method code with example usage: obj.eval_single_layer(x) and returns: self