connectLayers method
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;
}