private void FeedForward(int layerIndex) { var layer = Layers[layerIndex]; var input = Layers[layerIndex - 1].Select(neuron => neuron.Output).ToArray(); foreach (var neuron in layer) { var weightedSum = neuron.InputSynapses .Select((synapse, synapseIndex) => synapse.Weight * input[synapseIndex]) .Sum(); neuron.Output = NeuralNetworkHelper.Sigmoid(weightedSum + neuron.Bias); } if (layerIndex < Layers.Count - 1) { FeedForward(layerIndex + 1); } }