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

MATLAB Discussion :

Problème réseau de neurones


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Problème réseau de neurones
    Bonjour,

    en fait j'ai un réseau de neurones avec des entrées de taille 27.
    J'applique 1000 entrées.
    Ma sortie est un booléen. Une fois l'apprentissage effectué, je compare les sorties réelles avec les sorties attendues, les fonctions de transfert sont les logsig

    J'ai plusieurs questions quant au paramétrage optimal du réseau:

    1) Comment choisir efficacement le nombre de couches intermédiaires (avec le nombre de neurones sur chacune de ces couches)?

    2) Comment choisir la fonction d'entrainement?

    J'ai essayé la fonction d'entraînement trainlm, avec comme limite 10000 itérations, 3 couches cachées et 6 neurones sur chacune de ces couches (j'ai choisi au hasard).

    Mais l'apprentissage se termine au bout de 3 itérations, avec un mu = 10^100 et un gradient à 10^-31. Pour finir, en sortie je n'ai que des valeurs proches de 0.5 (alors que je suis censé obtenir un booléen...)

    A quoi cela est dû selon vous? Pouvez vous m'aider?

    Merci d'avance

    PS: voilà le bout de code que j'ai utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    hiddenSizes = [6 6 6];
    trainFcn = 'trainlm';
    net = feedforwardnet(hiddenSizes,trainFcn);
    net.trainParam.epochs = 10000;
    net.trainParam.min_grad = 0;
    net.trainParam.goal = 0;
    net.trainParam.mu_max = 10^100;
    net.trainParam.mu = 0.001;
    net.trainParam.max_fail = 100;
    net.layers{:}.transferFcn = 'logsig';
    net_appris = train(net,entrees,sorties_desirees);
    sorties_test = net_appris(entrees);

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai résolu mon problème

    En fait il me manquait la théorie pour le paramétrage. Pour ceux et celles que cela intéresserait, je me suis servi de ce site, qui explique qu'on doit raisonner en 4 étapes: Fixer le nombre de couches cachées, la première permettant d'approximer toute fonction continue, et la deuxième permettant de gérer les discontinuités (pas besoin de plus ). La deuxième étape consiste à fixer le nombre de neurones dans chaque couche (pour les couches cachées, il faudrait prendre soit N = nombre de neurones dans la couche d'entrée, soit N = 75% du nombre de neurones dans la couche d'entrée, soit la racine du produit entre le nombre de neurones dans la couche d'entrée et le nombre de neurones dans la couche de sortie. J'ai donc choisi hiddenSizes = [5 5].
    Les deux autres étapes concernent le choix de la fonction d'activation et d'apprentissage.
    Après j'ai pris comme fonction d'activation la sigmoïde, et comme apprentissage le trainscg, et ça marche!!!


    Bon j'avoue c'est ultra empirique, mais j'ai l'impression qu'on ne peut pas faire autrement

Discussions similaires

  1. Problème de convergence dans un réseau de neurones
    Par Rhyos dans le forum Méthodes prédictives
    Réponses: 5
    Dernier message: 17/08/2011, 12h03
  2. Réponses: 2
    Dernier message: 18/05/2011, 17h43
  3. Probléme avec réseau de neurone artificiel
    Par bensof1 dans le forum Méthodes prédictives
    Réponses: 4
    Dernier message: 03/05/2011, 16h40
  4. Problème de réseau de neurones
    Par manyl dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/11/2010, 15h35
  5. Apprentissage de réseau de neurones
    Par flahaymen dans le forum Méthodes prédictives
    Réponses: 0
    Dernier message: 06/01/2009, 16h34

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