Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Création d'une couche de réseau de neurones | Notions de Base de TensorFlow
Introduction à TensorFlow
Section 3. Chapitre 1
single

single

Création d'une couche de réseau de neurones

Glissez pour afficher le menu

Couche unique de réseau de neurones

Dans un réseau de neurones à propagation avant basique, la sortie d’un neurone dans une couche est calculée à l’aide de la somme pondérée de ses entrées, passée à travers une fonction d’activation. Cela peut être représenté comme suit :

y=σ(Wx+b)y=\sigma(W \cdot x + b)

Où :

  • yy : sortie du neurone ;
  • WW : matrice représentant les poids associés aux connexions du neurone ;
  • xx : matrice colonne (ou vecteur) représentant les valeurs d’entrée du neurone ;
  • bb : valeur scalaire ;
  • σ\sigma : fonction d’activation, telle que la fonction sigmoïde, ReLU ou softmax.

Pour obtenir les meilleures performances, tous les calculs sont effectués à l’aide de matrices. Nous allons procéder de la même manière.

carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img
Tâche

Glissez pour commencer à coder

Étant donné des poids, des entrées et un biais pour une couche de neurones unique, calculer sa sortie en utilisant la multiplication matricielle et la fonction d'activation sigmoïde. Considérer une couche avec 3 entrées et 2 neurones, prenant un seul lot contenant un seul échantillon.

  1. Détermination des dimensions :

    • La forme de la matrice d'entrée I doit avoir pour première dimension le nombre d'échantillons dans le lot. Avec un échantillon ayant 3 entrées, sa taille sera 1x3 ;
    • La matrice de poids W doit avoir ses colonnes représentant les poids d'entrée pour chaque neurone. Ainsi, pour 2 neurones avec 3 entrées, la forme attendue est 3x2. Ce n'est pas le cas, il faut donc transposer la matrice de poids pour obtenir la forme requise.
  2. Multiplication matricielle :

    • Avec les matrices dans la bonne forme, effectuer la multiplication matricielle ;
    • Rappel : lors d'une multiplication matricielle, la sortie est obtenue à partir du produit scalaire de chaque ligne de la première matrice avec chaque colonne de la seconde matrice. Veiller à multiplier dans le bon ordre.
  3. Ajout du biais :

    • Effectuer simplement une addition élément par élément du résultat de la multiplication matricielle avec le biais.
  4. Application de l'activation :

    • Utiliser la fonction d'activation sigmoïde sur le résultat de l'addition du biais pour obtenir la sortie du neurone ;
    • TensorFlow fournit la fonction sigmoïde sous la forme tf.sigmoid().

Remarque

À la fin du cours, nous aborderons la mise en œuvre d'un réseau feed-forward complet avec TensorFlow. Cet exercice pose les bases pour cela.

Solution

Description du code
expand arrow

Définir les poids, les entrées et le biais de la couche

Ici, nous définissons les poids, les entrées et le biais pour la couche. Nous utilisons tf.Variable() pour les poids et le biais car ce sont des paramètres entraînables dans les réseaux de neurones, et tf.constant() pour l’entrée car elle reste inchangée pendant l’entraînement. dtype=tf.float64 est défini pour une meilleure précision.

W = tf.Variable([[0.5, 0.4, 0.7], [0.1, 0.9, 0.5]], dtype=tf.float64)

Ceci est la matrice de poids pour la couche neuronale. Chaque ligne représente les poids pour un neurone par rapport à chaque entrée.

I = tf.constant([[0.5, 0.6, 0.1]], dtype=tf.float64)

Ceci est la matrice d’entrée, représentant un seul échantillon avec 3 caractéristiques.

b = tf.Variable(0.1, dtype=tf.float64)

Ceci est la valeur du biais. C’est un scalaire ajouté à la somme pondérée avant le passage par la fonction d’activation.

W = tf.transpose(W)

Les poids sont organisés en lignes, mais pour la multiplication matricielle, ils doivent être en colonnes. Par conséquent, nous transposons la matrice. Après cela, la première colonne correspond aux poids du premier neurone, et la deuxième colonne à ceux du second neurone.

weighted_sum = tf.matmul(I, W)

Ici, nous effectuons la multiplication matricielle de l’entrée et de la matrice de poids transposée. Cela nous donne la somme pondérée des entrées.

Décomposons cette multiplication matricielle étape par étape :

Déterminer la forme de la matrice résultante :

La matrice résultante aura le nombre de lignes de la première matrice (matrice I de forme 1x3) et le nombre de colonnes de la seconde matrice (matrice W de forme 3x2). Ainsi, la matrice résultante sera de forme 1x2.

Processus de multiplication matricielle :

Pour le premier élément de la matrice résultante (appelons-le S[0][0] pour "somme pondérée") :

  • Multiplier le premier élément de la première ligne de la matrice I par le premier élément de la première colonne de la matrice W : 0.5 * 0.5 = 0.25 ;
  • Multiplier le deuxième élément de la première ligne de la matrice I par le deuxième élément de la première colonne de la matrice W : 0.6 * 0.4 = 0.24 ;
  • Multiplier le troisième élément de la première ligne de la matrice I par le troisième élément de la première colonne de la matrice W : 0.1 * 0.7 = 0.07 ;
  • Additionner ces produits : 0.25 + 0.24 + 0.07 = 0.56.

Ainsi, S[0][0] vaut 0.56.

Pour le second élément de la matrice résultante (S[0][1]) :

  • Multiplier le premier élément de la première ligne de la matrice I par le premier élément de la deuxième colonne de la matrice W : 0.5 * 0.1 = 0.05 ;
  • Multiplier le deuxième élément de la première ligne de la matrice I par le deuxième élément de la deuxième colonne de la matrice W : 0.6 * 0.9 = 0.54 ;
  • Multiplier le troisième élément de la première ligne de la matrice I par le troisième élément de la deuxième colonne de la matrice W : 0.1 * 0.5 = 0.05 ;
  • Additionner ces produits : 0.05 + 0.54 + 0.05 = 0.64.

Ainsi, S[0][1] vaut 0.64.

Ainsi, la matrice résultante S issue de la multiplication de la matrice I et de la matrice W est :

[ [0.56, 0.64] ]
biased_sum = weighted_sum + b

Le biais est ajouté à la somme pondérée. Il s’agit d’une transformation affine qui décale le résultat pour un meilleur ajustement lors de l’entraînement.

neuron_output = tf.sigmoid(biased_sum)

La fonction sigmoïde comprime la valeur entre 0 et 1, garantissant que notre sortie est dans une plage normalisée. Elle est couramment utilisée dans les problèmes de classification binaire.

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 1
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt