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

Calcul scientifique Python Discussion :

neural_network; numpy matrix round [Python 3.X]


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 8
    Points
    8
    Par défaut neural_network; numpy matrix round
    Je viens de bloquer sur la matrice et . round qui me résiste sur la fin, il me dit que ce n'est pas applicable j'ai l'impression . Le but est de simplifier au maximum un NN en script python pour faire un doc pdf qui va avec pour expliquer plus facilement sa composition et fonctionnement . Pourquoi il m'insulte sur la fin , utilisation de la petite réf de base indiquer dans le lien ci joint, malgré tous c'est le flop. Comme d'habitude je bloque sur des format happymeal.
    https://numpy.org/doc/stable/referen...py.matrix.html
    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
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    # language a utiliser python , télécharger anaconda (bibliothèque python),et télécharger numpy (bibliothèque mathématique)
     
    # impoter numpy 
    import numpy as np 
     
    # Variable de creation d'un tableau
    x_entrer = np.array(([3, 1.5], [2, 1], [4, 1.5], [3, 1], [3.5,0.5], [2,0.5], [5.5,1], [1,1], [4,1.5]), dtype=float) 
     
    # données d'entrer,  données de sortie /  1 = rouge /  0 = bleu
    y = np.array(([1], [0], [1],[0],[1],[0],[1],[0]), dtype=float)
     
     
    # Changement de l'échelle de nos valeurs pour être entre 0 et 1
     # On divise chaque entré par la valeur max des entrées
    x_entrer = x_entrer/np.amax(x_entrer, axis=0) 
     
    # On récupère ce qu'il nous intéresse
     # Données sur lesquelles on va s'entrainer, les 8 premières de notre matrice
    X = np.split(x_entrer, [8])[0]
     
    # Valeur que l'on veut trouver
    xPrediction = np.split(x_entrer, [8])[1] 
     
    #Notre classe de réseau neuronal
    class Neural_Network(object):
      def __init__(self):
     
      #Nos paramètres
        self.inputSize = 2 # Nombre de neurones d'entrer
        self.outputSize = 1 # Nombre de neurones de sortie
        self.hiddenSize = 3 # Nombre de neurones cachés
     
      #Nos poids
       # (2x3) Matrice de poids entre les neurones d'entrer et cachés
        self.W1 = np.random.randn(self.inputSize, self.hiddenSize)
       # (3x1) Matrice de poids entre les neurones cachés et sortie  
        self.W2 = np.random.randn(self.hiddenSize, self.outputSize) 
     
      #Fonction de propagation avant
      def forward(self, X):
    		# Multiplication matricielle entre les valeurs d'entrer et les poids W1
        self.z = np.dot(X, self.W1) 
     
    		# Application de la fonction d'activation (Sigmoid)   
        self.z2 = self.sigmoid(self.z)
     
    		# Multiplication matricielle entre les valeurs cachés et les poids W2
        self.z3 = np.dot(self.z2, self.W2) 
     
    		# Application de la fonction d'activation, et obtention de notre valeur de sortie final return o
        o = self.sigmoid(self.z3) 
     
      # Fonction d'activation
      def sigmoid(self, s):
        return 1/(1+np.exp(-s))
     
      # Dérivée de la fonction d'activation
      def sigmoidPrime(self, s):
        return s * (1 - s)
     
      #Fonction de rétropropagation
      def backward(self, X, y, o):
     
      # Calcul de l'erreur
        self.o_error = y - o 
     
      # Application de la dérivée de la sigmoid à cette erreur
        self.o_delta = self.o_error*self.sigmoidPrime(o)
     
      # Calcul de l'erreur de nos neurones cachés   
        self.z2_error = self.o_delta.dot(self.W2.T)
     
     # Application de la dérivée de la sigmoid à cette erreur
        self.z2_delta = self.z2_error*self.sigmoidPrime(self.z2)
     
        self.W1 += X.T.dot(self.z2_delta) # On ajuste nos poids W1
        self.W2 += self.z2.T.dot(self.o_delta) # On ajuste nos poids W2
     
      #Fonction d'entrainement 
      def train(self, X, y):
     
        o = self.forward(X)
        self.backward(X, y, o)
     
      #Fonction de prédiction
      def predict(self):
     
        print("Donnée prédite apres entrainement: ")
        print("Entrée : \n" + str(xPrediction))
        print("Sortie : \n" + str(self.forward(xPrediction)))
     
        if(self.forward(xPrediction) < 0.5):
            print("La fleur est BLEU ! \n")
        else:
            print("La fleur est ROUGE ! \n")
     
     
    NN = Neural_Network()
     
    for i in range(1000): #nombre d'itération
        print("# " + str(i) + "\n")
        print("Valeurs d'entrées: \n" + str(X))
        print("Sortie actuelle: \n" + str(y))
        print("Sortie prédite: \n" + str(np.matrix.round(NN.forward(X),2)))
        print("\n")
        NN.train(X,y)
     
    NN.predict()
    ERREUR EST LA SUIVANTE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "D:\Disque 1\clé usb tom\INFORMATIQUE\cyber tom\neuronne artificiel\neurone python.py", line 104, in <module>
        print("Sortie prédite: \n" + str(np.matrix.round(NN.forward(X),2)))
    TypeError: descriptor 'round' for 'numpy.ndarray' objects doesn't apply to a 'NoneType' object

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    L'erreur dit juste que NN.forward(X),2) a retourné None.

    Après s'il faut comprendre ce que vous avez cherché à faire côté réseau de neurones.... c'est pas ma tasse de thé et pas vraiement un sujet "python".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Dans la fonction forward, elle sert à quoi cette dernière ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    o = self.sigmoid(self.z3)
    si ensuite vous n'utilisez pas o dans la fonction?

    Par la suite, dans la fonction train vous écrivez
    Mais la fonction forward retourne qqch ? Dans votre code non, donc o vaudra None (faites un print de o juste après, vous verrez).

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Que le dieu du script me tombe sur la tête
    ah l'oublie fatal que j'ai fait effectivement , ma fonction d'activation final doit être retourné sur o (return o) sinon elle peut pas suivre sur le reste , ohhhh merci beaucoup sa marche parfaitement ,la PLS cosmique . Merci du fond du script

    [RESOLU]

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

Discussions similaires

  1. Classe Matrix<T>
    Par coyotefunky dans le forum C++
    Réponses: 27
    Dernier message: 20/03/2005, 23h14
  2. [VB][INFO] A propos de la fonction Round
    Par L.nico dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 10/03/2005, 11h59
  3. [Optimisation] Hardware Matrix Stack
    Par Blustuff dans le forum OpenGL
    Réponses: 6
    Dernier message: 05/02/2004, 13h45
  4. OpenDialog(round 2)
    Par shogoune dans le forum Composants VCL
    Réponses: 4
    Dernier message: 10/06/2003, 14h10
  5. qu'est ce que l'instruction "round"?
    Par isa_21 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/03/2003, 10h37

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