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 :

[neural network toolbox] activité des neurones à l'intérieur du réseau


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut [neural network toolbox] activité des neurones à l'intérieur du réseau
    Bonjour à tous,

    Voilà, j'ai entrainer un réseau de type feedforward (commande : newff) avec un entrainement de Levenberg-Marquardt backpropagation (commande : trainlm).

    Il est composé de 19 entrées et 14 sorties ace 17 neurones dans la couche cachée. la fonction d'activation des neurones de la couche cachée est une "Hyperbolic tangent sigmoid transfer function" (commande "tansig") et pour la couche de sortie une "Linear transfer function" (commande "purelin").

    Le code qui m'a permis d'entrainer ce réseau est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    input  = Adesort(:,3:21)';
        output = Adesort(:,22:end)';
     
        net=newff(input,output,17);
        net=train(net,input,output);
    Voici ce que j'ai fait pour tenter de retrouver dans un premier temps la sortie de mon réseau de manière à être sûr de l'activité retrouvée dans la couche cachée :

    Code : 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
    function activity    = simulate_RDN(net,input)
     
    %%
    load net_RDN
    input = ones(1,19);
     
    % pour voir la représentation du réseau
    view(net)
     
    % mise en forme du vecteur d'entré (en ligne)
    if size(input,2) == 1
        input = input';
    end
     
    % calule de l'activité des neurones de la couche cachée
    num_layer = 1; % indice couche cachée
    for a=1:net.Layers{num_layer}.size
        if strcmp(net.Layers{num_layer}.transferFcn,'tansig')
            activity.HL(a) = tansig(sum(input.*net.IW{num_layer}(a,:)) + net.b{num_layer}(a));
        elseif strcmp(net.Layers{icc}.transferFcn,'logsig')
            activity.HL(a) = logsig(sum(input.*net.IW{num_layer}(a,:)) + net.b{num_layer}(a));
        end
    end
     
    % mise en forme du vecteur d'entré (en ligne)
    if size(activity.HL,2) == 1
        activity.HL = activity.HL';
    end
     
     
    % calule de l'activité des neurones de la couche de sortie
    num_layer = 2;
    for b=1:net.Layers{num_layer}.size
        if strcmp(net.Layers{num_layer}.transferFcn,'purelin')
            activity.OL(b) = sum(activity.HL.*net.LW{num_layer,1}(b,:)) + net.b{num_layer}(b);
        end
    end
     
    input= ones(19,1);
    output = sim(net,input)
    activity.OL'
    Vous pouvez accéder au réseau de neurones entrainé
    validité de 15jours
    Utilisateur : hey69pbk
    Mot de passe : g2u8s2l3

    En ne trouvant pas la même sortie, j'ai voulu voir les paramètres de mon réseau et en utilisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    net.inputs{1}
     
    ans = 
     
           exampleInput: [19x3200 double]
                   name: 'Input'
            processFcns: {'fixunknowns'  'removeconstantrows'  'mapminmax'}
          processParams: {[1x1 struct]  [1x1 struct]  [1x1 struct]}
        processSettings: {[1x1 struct]  [1x1 struct]  [1x1 struct]}
         processedRange: [19x2 double]
          processedSize: 19
                  range: [19x2 double]
                   size: 19
               userdata: [1x1 struct]
    On peut voir qu'il y a des "processFcns" qui sont utilisés et que je n'ai pas codé ci-dessus. Mon problème est que même en codant le "mapminmax" qui est, pour moi, une normalisation des données d'entrée, je ne retrouve pas non plus la sortie désirée (avec "sim")...

    Si quelqu'un pouvait m'aider à y voir plus clair ou si vous trouvez une fonction qui me permet d'avoir accès à l'activité des neurones à l'intérieur du réseau, ce serait excellent.

    Merci pour votre

    Christophe
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Je pense avoir trouvé dans les fonctions de matlab où ça se passe :

    ligne 201 de la fonction "sim"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Yl = processoutputs(net,Al);
    Yl est de dimension (2,1) qui comprends deux structures dont les dimensions correspondent aux sorties de chaque couche...

    Maintenant, j'aimerais quand même pouvoir retrouvé grâce aux infos du réseaux ces valeurs de sorties de couche....

    Christophe
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

Discussions similaires

  1. Réponses: 8
    Dernier message: 08/10/2009, 08h26
  2. Neural networks toolbox
    Par berlilou dans le forum MATLAB
    Réponses: 2
    Dernier message: 24/09/2009, 07h36
  3. [neural network toolbox] définir la précision que l'on veut obtenir
    Par christophe_halgand dans le forum MATLAB
    Réponses: 0
    Dernier message: 27/04/2009, 13h44
  4. Réponses: 2
    Dernier message: 22/04/2009, 23h04
  5. Réponses: 0
    Dernier message: 10/02/2009, 14h08

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