Example #1
0
        /// <summary>
        /// Calcule des erreurs (gradiant local) des neurones de la couche de sortie
        /// </summary>
        /// <param name="tests">Jeu de tests</param>
        /// <param name="cible">Cible (valeur désirée) pour chaque jeu de test</param>
        private void CalculerDeltaO(double[] cible)
        {
            Couche coucheSortie = Couches[Couches.Length - 1];

            for (int k = 0; k < coucheSortie.Neurones.Length; k++)
            {
                Neurone neuroneO = coucheSortie.Neurones[k];
                double  ecart    = 0.0;

                ecart           = cible[k] - neuroneO.Sortie;
                neuroneO.Erreur = neuroneO.TransfertDerivee(neuroneO.Somme + neuroneO.Biais) * ecart;
                //Debug.WriteLine("Gradiant O: " + neuroneO.Erreur.ToString());
            }
        }
Example #2
0
        /// <summary>
        /// Calcule de l'erreur (gradiant local) des neurones des couches cachées
        /// </summary>
        /// <param name="couche1">Couche cachée N</param>
        /// <param name="couche2">Couche N + 1</param>
        /// <returns></returns>
        private void CalculerDeltaH(Couche couche1, Couche couche2)
        {
            for (int k = 0; k < couche1.Neurones.Length; k++)
            {
                Neurone neuroneH = couche1.Neurones[k];

                double somme = 0.0;
                for (int i = 0; i < couche2.Neurones.Length; i++)
                {
                    Neurone neurone2 = couche2.Neurones[i];
                    somme += neurone2.Poids[k] * neurone2.Erreur;
                }

                neuroneH.Erreur = neuroneH.TransfertDerivee(neuroneH.Somme + neuroneH.Biais) * somme;
                //Debug.WriteLine("Gradiant H: " + neuroneH.Erreur.ToString());
            }
        }