class_docstr: The dense layer is defined by:
  
  .. math::
  
      \begin{align*}
          y_j = \sigma\left(\sum\limits_{i=0}^{F_{in}-1}w_{ij}x_i+b_j\right), && \forall 0\le j<F_{out}
      \end{align*}
  
  Parameters
  ----------
  input_size : tuple
      the size of the input.
  output_size : tuple
      the size of the output.
  weight : matrix-like
      the weight matrix.
  biases : array-like
      the biases.
  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 __str__(self):
      return f"DenseLayer(input_size={self.input_size}, output_size={self.output_size})"
  
imports: import itertools
  import numpy
label_desc: Use image node_id 4 for calling the DenseLayer obj's underlying member method code with example usage: obj.__str__() and returns: str, self, str, self, str