function layer(inputs, weight_matrix, biases, activation):

   outputs = []
   for neuron_weights, neuron_bias in zip(weight_matrix, biases):
      outputs.append(neuron(inputs, neuron_weights, neuron_bias, activation))
   return outputs

 # stacking layers: raw pixels -> edges -> shapes -> object parts -> "cat"
