public void Calculate(double[] INVector, double[] CibleVector, double[] CourantVector, NeuroneSortieListe pNeuronOutputs) { int count = 0; var premiereCouche = Couches.First(); if (Couches.Count > 1) { foreach (var neuron in premiereCouche.neurones) { if (count < premiereCouche.neurones.Count) { //neuron.Sortie = 9; neuron.Sortie = INVector[count]; count++; } } // Calcul sur les couches cachées for (int i = 1; i < Couches.Count; i++) { Couches[i].Calculate(); } // Charge la sortie if (CourantVector != null) { var lit = Couches[Couches.Count - 1]; for (int i = 0; i < lit.neurones.Count; i++) { CourantVector[i] = lit.neurones[i].Sortie; } } if (pNeuronOutputs != null) { pNeuronOutputs.Clear(); pNeuronOutputs.Capacity = Couches.Count; foreach (CoucheBase cc in Couches) { var coucheSortie = new NeuroneSortie(cc.neurones.Count); for (int i = 0; i < cc.neurones.Count; i++) { coucheSortie.Add(cc.neurones[i].Sortie); } pNeuronOutputs.Add(coucheSortie); } } } }