IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes prédictives Discussion :

Réseau de neurones MLP


Sujet :

Méthodes prédictives

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut Réseau de neurones MLP
    Bonjour,

    je cherche sans succès à réaliser un réseau de neurones multicouche (2 neurones en entrée, 2 dans la couche cachée et 1 dans la couche de sortie) afin de reproduire la fonction XOR.
    Voici mon programme:
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    void ApprentissageRetropropagation(double poidsNeuroneC1[4], double poidsNeuroneCC[4], double poidsNeuroneCS[2] , int nombreEchantillonPos, int nombreEchantillonNeg)
    {
        int a(0), b(0), sortieImage(0);
        double sortie(0),erreur(0),erreurCC[2],erreurC1[2];
        bool TouteSortie = false;
        int entre[4][3]={{0,0,0},{1,0,1},{0,1,1},{1,1,0}};
        int echantillon[2];
        int nombreEchantillonTot = nombreEchantillonPos + nombreEchantillonNeg;
        double sortieC1[2], sortieCC[2];
     
     
        while (TouteSortie!=1) {
            a=0;
            int h=0;
            while (a<nombreEchantillonTot)
            {
                for (int j=0; j<2; j++)
                    echantillon[j]=entre[h][j];
                sortieImage=entre[h][2];
     
                //CALCUL DE LA SORTIE
     
                for (int i=0; i<2; i++) {
                    sortieC1[i]=f(echantillon[0]*poidsNeuroneC1[i]+echantillon[1]*poidsNeuroneC1[i+2]);
                }
     
                for (int i=0; i<2; i++) {
                    //cout << "sorite C1 0 " <<sortieC1[0]*poidsNeuroneCC[i] << " sortie C1 1 "<< sortieC1[1]*poidsNeuroneCC[i+2];
                    sortieCC[i]=f(sortieC1[0]*poidsNeuroneCC[i]+sortieC1[1]*poidsNeuroneCC[i+2]);
                }
     
     
                sortie=f(sortieCC[0]*poidsNeuroneCS[0]+sortieCC[1]*poidsNeuroneCS[1]);
     
                erreur=(sortieImage-sortie);//ERREUR SORTIE
     
                if ((erreur)<0.1 && erreur>=0)
                {
                    b++;
                    if (b>=nombreEchantillonTot)
                    {
                        TouteSortie=1;
     
                    }
                }
                else
                {
                    double df=0;
                    b=0;
                    //petiit delta
                    for (int i=0; i<2; i++) {
                        erreurCC[i]=erreur*poidsNeuroneCS[i];
                    }
     
                    erreurC1[0]=poidsNeuroneCC[0]*erreurCC[0]+poidsNeuroneCC[1]*erreurCC[1];
                    erreurC1[1]=poidsNeuroneCC[2]*erreurCC[0]+poidsNeuroneCC[3]*erreurCC[1];
     
                    for (int i=0; i<2; i++) {
                        df=fp(echantillon[0]*poidsNeuroneC1[i]+echantillon[1]*poidsNeuroneC1[2+i]);
                        poidsNeuroneC1[0] += mu*erreurC1[i]*echantillon[0]*df;
                        poidsNeuroneC1[i+2] += mu*erreurC1[i]*echantillon[1]*df;
                    }
     
                    for (int i=0; i<2; i++) {
                        df=fp(sortieC1[0]*poidsNeuroneCC[i]+sortieC1[1]*poidsNeuroneCC[i+2]);
                        poidsNeuroneCC[i]+= mu * erreurCC[i]*df*sortieC1[0];
                        poidsNeuroneCC[i+2]+= mu * erreurCC[i]*df*sortieC1[1];
                    }
     
                    df=fp(sortieCC[0]*poidsNeuroneCS[0]+sortieCC[1]*poidsNeuroneCS[1]);
                    for (int i=0; i<=2; i=i+2) {
                        poidsNeuroneCS[i] += mu*erreur*sortie*df;
                    }
     
     
                }
     
                a++;
                h++;
            }
        }
     
    }

    Merci d'avance!

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Et… ? Quel est ton problème ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut
    L'apprentissage ne me permet pas de trouver les poids pour réaliser la fonction XOR et je ne sais pas d'où vient le problème.
    (j'ai suivi cette méthode http://galaxy.agh.edu.pl/~vlsi/AI/ba.../backprop.html)

  4. #4
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Comment as tu initialisé les poids ?
    Quel est la valeur du learning rate ?

    Est ce que tu as fait tourné un exemple à la main ? C'est un tout petit RdN, il est facile de faire afficher l'apprentissage pour une entrée donnée est vérifier si les poids sont modifiés de manière appropriée.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Par défaut
    Ou plus simplement, arrives-tu à réaliser un perceptron simple (apprentissage du ET ou du OU) ?
    Me semble être un bon départ si le XOR te pose soucis.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/08/2011, 13h22
  2. Réponses: 60
    Dernier message: 12/05/2011, 14h18
  3. bibliothèque c++ mlp réseau de neurones
    Par smudger dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 11/04/2011, 21h07
  4. interface graphique, réseau de neurones
    Par korp69 dans le forum C++
    Réponses: 19
    Dernier message: 13/11/2006, 13h44
  5. Réseau de neurones - reconnaissance visage
    Par PrAbronsius dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 03/05/2006, 03h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo