connectLayers method

List<Layer> connectLayers({
  1. required List<Layer> layers,
})

Implementation

List<Layer> connectLayers({required List<Layer> layers}) {
  for (Layer layer in layers) {
    if (layer.layerType == LayerType.input) {
      for (Neuron neuron in layer.neurons) {
        neuron.outputEdges = [];
        for (Neuron nextLayerNeuron in layer.nextLayer!.neurons) {
          Random random = Random();
          double randomDouble = (random.nextDouble() * 2) - 1;
          Edge edge = Edge(
              weight: randomDouble,
              inputNeuron: neuron,
              outputNeuron: nextLayerNeuron);
          neuron.outputEdges!.add(edge);
        }
      }
    } else if (layer.layerType == LayerType.hidden) {
      for (Neuron neuron in layer.neurons) {
        neuron.inputEdges = [];
        neuron.outputEdges = [];
        for (Neuron nextLayerNeuron in layer.nextLayer!.neurons) {
          Random random = Random();
          double randomDouble = (random.nextDouble() * 2) - 1;
          Edge edge = Edge(
              weight: randomDouble,
              inputNeuron: neuron,
              outputNeuron: nextLayerNeuron);
          neuron.outputEdges!.add(edge);
        }
        for (Neuron previousLayerNeuron in layer.previousLayer!.neurons) {
          for (Edge previousEdge in previousLayerNeuron.outputEdges!) {
            if (previousEdge.outputNeuron == neuron) {
              neuron.inputEdges!.add(previousEdge);
            }
          }
        }
      }
    } else {
      for (Neuron neuron in layer.neurons) {
        neuron.inputEdges = [];
        for (Neuron previousLayerNeuron in layer.previousLayer!.neurons) {
          for (Edge previousEdge in previousLayerNeuron.outputEdges!) {
            if (previousEdge.outputNeuron == neuron) {
              neuron.inputEdges!.add(previousEdge);
            }
          }
        }
      }
    }
  }
  return layers;
}