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
code: def __init__(
      self,
      input_size,
      output_size,
      *,
      activation=None,
      input_index_mapper=None,
  ):
      if not isinstance(input_size, (list, tuple)):
          raise TypeError(
              f"input_size must be a list or tuple, {type(input_size)} was provided."
          )
      if not isinstance(output_size, (list, tuple)):
          raise TypeError(
              f"output_size must be a list or tuple, {type(output_size)} was provided."
          )
      self.__input_size = list(input_size)
      self.__output_size = list(output_size)
      self.activation = activation
      if input_index_mapper is None:
          input_index_mapper = IndexMapper(input_size, input_size)
      self.__input_index_mapper = input_index_mapper
  
imports: import itertools
  import numpy
label_desc: Use image node_id 1 to create a new Layer object  with example: obj = Layer(input_size, output_size)