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

R Discussion :

Réseau de neurones : choix de nombre de couches cachées et le nombre de neurones dans chaque couche


Sujet :

R

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Réseau de neurones : choix de nombre de couches cachées et le nombre de neurones dans chaque couche
    Bonjour,
    Je fais une régression à l'aide d'un réseau de neurones et je tombe dans le problème de choix de nombre de couches cachées et le nombre de neurones dans chaque couche,
    et aussi le programme m'affiche l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Error in neurons[[i]] %*% weights[[i]] : non-conformable arguments
    Comment je peux régler ce problème et pour aller plus loin, quel est votre conseil ?
    Merci.

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Nt1= read.csv2("D:/DATA/N-NIRsoil1A.csv",header = T , sep = ";",row.names = 1,check.names = F)
     
    Nt1.train=Nt1[Nt1$train==1,2:ncol(Nt1)]
    Nt1.test=Nt1[Nt1$train==0,2:ncol(Nt1)]
    Nt1.train$NIR= as.matrix(Nt1.train[2:195])
     
    library(neuralnet)
    nnet.fit <- neuralnet(Nt ~ NIR, data=Nt1.train ,hidden = 3,5,6)
     
     
    Ntp= predict(nnet.fit , newdata=NIR)

  2. #2
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Code R : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x <- 1:100
    y <- 2*x+1
     
    data = data.frame(x,y)
    net <- neuralnet(y~x,  data, hidden =0, rep=10, linear.output=TRUE)
    plot(net, rep="best")

    Pour une régression, je configurerais neuralnet avec hidden a 0 et linear.output a True.

    Au plaisir de te lire.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut nombre de variables
    Merci pour votre réponse.
    J'ai une autre question : est-ce que ce type de régression (reseau de neurones) donne des bons résultats lorsqu'on a un très grand nombre de variables (600 variables, analyse spectrale) ?
    Merci.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Redando,

    Le résultat est les mêmes avec peu ou beaucoup de variable.

    Par contre en statistiques quand il y a beaucoup de variables. On a tendance à faire une ACP pour réduire ce nombre en prenant les dimensions principales. (Mais, attention! les dimensions principales ne sont pas toujours les dimensions qui influent sur la variable à évaluer.). De plus avec une régression linéaire classique, des informations sur la qualité des paramètres sont définies et permettent de mieux connaitre la "qualité" des résultats que pour des réseaux de neurones

    Au plaisir de vous lire.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par dev_ggy Voir le message
    Redando,

    Le résultat est les mêmes avec peu ou beaucoup de variable.

    Par contre en statistiques quand il y a beaucoup de variables. On a tendance à faire une ACP pour réduire ce nombre en prenant les dimensions principales. (Mais, attention! les dimensions principales ne sont pas toujours les dimensions qui influent sur la variable à évaluer.). De plus avec une régression linéaire classique, des informations sur la qualité des paramètres sont définies et permettent de mieux connaitre la "qualité" des résultats que pour des réseaux de neurones

    Au plaisir de vous lire.
    monsieur dev_ggy:
    oui je suis avec vous, je fais une ACP et je choisis le nombre d'axes factoriels pour expliquer ma variation et suite je réalise une régression PLS1 sur mes variables et je trouve des bons résultats, mais lorsque je fais une : REGRESSION RESEAU DE NEURONES, je tombe sur le problème suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error in neurons[[length.weights]] %*% weights[[length.weights]] : 
      non-conformable arguments

  6. #6
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Pour reprendre votre code :

    Code R : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Nt1= read.csv2("D:/DATA/N-NIRsoil1A.csv",header = T , sep = ";",row.names = 1,check.names = F)
     
    Nt1.train=Nt1[Nt1$train==1,2:ncol(Nt1)]
    Nt1.test=Nt1[Nt1$train==0,2:ncol(Nt1)]
    Nt1.train$NIR= as.matrix(Nt1.train[2:195])
     
    library(neuralnet)
    nnet.fit <- neuralnet(Nt ~ NIR, data=Nt1.train ,hidden = 3,5,6)
    ## Nt n'est pas définis dans le code fournis.
    ## je pense que NIR ne doit pas être une matrice
    ## qu'est ce que 5,6 ?
     
    Ntp= predict(nnet.fit , newdata=NIR)

    La question que je me pose est la suivante:
    Avez vous le même nombre de lignes entre Nt et NIR ?

    De plus d'après la doc Nt1.train doit être une data frame.

    Je ferais quelque les choses ainsi :

    Code R : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Nt1.train=Nt1[Nt1$train==1,c("Nt", "NIR")]
    nnet.fit <- neuralnet(Nt ~ NIR, data=Nt1.train ,hidden = 0, rep=10, linear.output=TRUE)

    Au plaisir de vous lire.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut même problème
    Pour les nombres de lignes, c'est le même nombre (> length(Nt) = 205 AVEC Nt un vecteur ligne et pour NIR > dim(NIR) = 205 ; 194 avec NIR matrice de variable)
    J'essaye à nouveau le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Nt1= read.csv2("D:/DATA/N-NIRsoil1A.csv",header = T , sep = ";",row.names = 1,check.names = F)
     
    Nt1.train=Nt1[Nt1$train==1,2:ncol(Nt1)]
    Nt1.test=Nt1[Nt1$train==0,2:ncol(Nt1)]
    Nt1.train$NIR= as.matrix(Nt1.train[2:195])
     
    data=data.frame(Nt1.train$Nt , Nt1.train$NIR )
    library(neuralnet)
    mod.NN <- neuralnet(Nt ~ NIR, data=data ,hidden = 0 , rep=10, linear.output=TRUE)
    et la même erreur s'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error in neurons[[length.weights]] %*% weights[[length.weights]] : 
      non-conformable arguments
    Voici le lien de mon data :
    http://www.mediafire.com/download/55...-NIRsoil1A.csv

    Merci beaucoup pour votre réponse.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Pour les nombres de lignes, c'est le même nombre (> length(Nt) = 205 AVEC Nt un vecteur ligne et pour NIR > dim(NIR) = 205 ; 194 avec NIR matrice de variable).
    J'essaye à nouveau le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Nt1= read.csv2("D:/DATA/N-NIRsoil1A.csv",header = T , sep = ";",row.names = 1,check.names = F)
     
    Nt1.train=Nt1[Nt1$train==1,2:ncol(Nt1)]
    Nt1.test=Nt1[Nt1$train==0,2:ncol(Nt1)]
    Nt1.train$NIR= as.matrix(Nt1.train[2:195])
     
    data=data.frame(Nt1.train$Nt , Nt1.train$NIR )
    library(neuralnet)
    mod.NN <- neuralnet(Nt ~ NIR, data=data ,hidden = 0 , rep=10, linear.output=TRUE)
    et la même erreur s'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error in neurons[[length.weights]] %*% weights[[length.weights]] : 
      non-conformable arguments
    Voici le lien de mon data :
    http://www.mediafire.com/download/55...-NIRsoil1A.csv

    Merci.

  9. #9
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Bonjour redando,

    Je n'ai pas accès aux données !

    Au plaisir de te lire.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Bonjour,
    Tu peux essayer avec ce lien :
    https://drive.google.com/file/d/0B1N...ew?usp=sharing

    Merci beaucoup.

  11. #11
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    redando,

    Code R : 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
    D = Nt1
    ### Pour controler le format des données 
    Numeric = c()
    for(i in 1:length(D.train)){
      Numeric[i] = is.numeric(D[,i])
    }
     
    summary(Numeric)
     
    ### Le traitement par réseau de neuronne
    library(neuralnet)
     
    xnam <- paste(names(D)[4:703], sep="")
    fmla <- as.formula(paste("Nt ~ ", paste(xnam, collapse= "+")))
     
     
    nnet.fit <- neuralnet(fmla, data=D[D$train==1,] ,hidden = 0, rep=10, linear.output=TRUE)

    Attention la colonne NT est avec une virgule et le reste avec des points. Il faut uniformiser.

    Au plaisir de te lire.

Discussions similaires

  1. Nombre de neurones de la couche cachée
    Par Juunii dans le forum Méthodes prédictives
    Réponses: 0
    Dernier message: 13/08/2015, 18h58
  2. Conseils réseau local hétérogène - choix de switch
    Par Lmargot dans le forum Achat et Conseils
    Réponses: 0
    Dernier message: 25/05/2014, 15h01
  3. Choix du nombre de neurones dans la couche cachée
    Par miss_angel dans le forum Intelligence artificielle
    Réponses: 2
    Dernier message: 05/05/2012, 23h39
  4. [Réseau] Firewall et choix de port
    Par poukill dans le forum C++
    Réponses: 7
    Dernier message: 31/07/2010, 14h05
  5. [Cartes auto-organisatrices] Nombre de neurones dans la couche d'entrée
    Par Chatbour dans le forum Méthodes prédictives
    Réponses: 2
    Dernier message: 03/01/2009, 15h43

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