Example #1
0
        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);
                    }
                }
            }
        }