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

Bibliothèques d'apprentissage profond Discussion :

reseau de neuronne avec keras, la prédiction retour des valeurs incohérente


Sujet :

Bibliothèques d'apprentissage profond

  1. #1
    Bot Troll en alpha-test

    Femme Profil pro
    Webmarketer
    Inscrit en
    septembre 2016
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2016
    Messages : 133
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut reseau de neuronne avec keras, la prédiction retour des valeurs incohérente
    Bonjour, je suis en tain de mettre au point un réseau de neuronne en python avec keras pour faire des additions

    Comme input/output j'ai ce fichier csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    1,2,3
    3,3,6
    4,5,9
    10,8,18
    1,3,4
    5,3,8
    qui se lit de cette façon :
    1+2=3
    3+3=6
    4+5=9
    ...etc.

    j'ai donc monter le réseau de neuronne avec keras :
    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
     
    from keras.models import Sequential
    from keras.layers import Dense
    import numpy
     
    seed = 7
    numpy.random.seed(seed)
     
    dataset = numpy.loadtxt("data.csv", delimiter=",")
     
    X = dataset[:,0:2]
    Y = dataset[:,2]
     
    model = Sequential()
    model.add(Dense(12, input_dim=2, init='uniform', activation='relu'))
    model.add(Dense(2, init='uniform', activation='relu'))
    model.add(Dense(1, input_dim=2, init='uniform', activation='linear'))
     
     
    model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
    model.fit(X, Y, epochs=150, batch_size=10,  verbose=2)
     
     
    predictions = model.predict(X)
    rounded = [round(x[0]) for x in predictions]
    print(rounded)
    j'utilise bien une fonction d'activation qui est censé me retourner des valeurs > 1 (pas comme la sigmoïde que l'on retrouve assez souvent)
    mais poutant j'ai comme output ceci 1,1,1,3,1,1,1...etc.

    j'ai quasi que des 1 pourquoi ?
    j'ai essayé de jouer sur les valeur en augmentant/diminuant les nombre dans la fonction dense mais il n'y a aucun changement.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Data Ingénieur & Scientist
    Inscrit en
    février 2009
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Data Ingénieur & Scientist
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : février 2009
    Messages : 476
    Points : 1 159
    Points
    1 159
    Billets dans le blog
    2
    Par défaut
    Bonjour datalandia,

    Je trouve curieux l’enchaînement de deux relu et qu'une fonction linéaire.

    J'aurai de mon côté pris deux ou trois fonctions linéaires.

    De plus, il ne faut pas mettre une accuary pour des données continues.

    Bien cordialement,

  3. #3
    Bot Troll en alpha-test

    Femme Profil pro
    Webmarketer
    Inscrit en
    septembre 2016
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2016
    Messages : 133
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dev_ggy Voir le message
    Bonjour datalandia,

    Je trouve curieux l’enchaînement de deux relu et qu'une fonction linéaire.

    J'aurai de mon côté pris deux ou trois fonctions linéaires.

    De plus, il ne faut pas mettre une accuary pour des données continues.

    Bien cordialement,
    j'ai modifier comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    model.add(Dense(6, input_dim=2, init='uniform', activation='linear'))
    model.add(Dense(1, init='uniform', activation='linear'))
    model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
    model.fit(X, Y, epochs=600, batch_size=6,  verbose=2)
    oui effectivement y'a du mieux.

  4. #4
    Membre éprouvé

    Homme Profil pro
    Data Ingénieur & Scientist
    Inscrit en
    février 2009
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Data Ingénieur & Scientist
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : février 2009
    Messages : 476
    Points : 1 159
    Points
    1 159
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    J'ai un peu tricher en définissant l'initialisation comme une constante. Ceci montre l'importance de ce problème.

    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
    from keras.models import Sequential
    from keras.layers import Dense
    from keras.initializers import Constant
     
    import numpy
     
    seed = 7
    numpy.random.seed(seed)
     
    dataset = numpy.loadtxt("data.csv", delimiter=",")
     
    X = dataset[:,0:2]
    Y = dataset[:,2]
     
    model = Sequential()
    model.add(Dense(1, input_dim=2, init=Constant(value=1), activation='linear'))
     
     
    model.compile(loss='mse', optimizer='adam', metrics=['mse'])
    model.fit(X.astype(float), Y.astype(float), epochs=250, batch_size=10)
     
    predictions = model.predict(X.astype(float))
    rounded = [round(x[0]) for x in predictions]
    print(rounded)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [3.0, 6.0, 9.0, 18.0, 4.0, 8.0]
    A plaisir de vous lire.

  5. #5
    Bot Troll en alpha-test

    Femme Profil pro
    Webmarketer
    Inscrit en
    septembre 2016
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : Enseignement

    Informations forums :
    Inscription : septembre 2016
    Messages : 133
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    oui pas bête effectivement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PowerShell] Test process avec MessageBox et test retour des boutons Yes ou No
    Par bolzardp dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 11/05/2017, 11h47
  2. [MySQL] boucle en php avec retour des valeur sur smarty
    Par le nOoB dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/09/2011, 17h05
  3. Fonction avec paramètre OUT et retour de valeur
    Par mortimer.pw dans le forum Débuter
    Réponses: 0
    Dernier message: 09/07/2010, 09h38
  4. Problème avec COUNT() et la récupération des valeurs..
    Par Marshall_Mathers dans le forum Outils
    Réponses: 4
    Dernier message: 25/06/2007, 12h26
  5. Réponses: 7
    Dernier message: 18/01/2007, 12h13

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