Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Bande de Gradient | Notions de Base de TensorFlow
Introduction à TensorFlow
Section 3. Chapitre 2
single

single

Bande de Gradient

Glissez pour afficher le menu

Gradient Tape

La compréhension des opérations fondamentales sur les tenseurs permet de passer à la simplification et à l'accélération de ces processus grâce aux fonctionnalités intégrées de TensorFlow. Le premier de ces outils avancés à explorer est le Gradient Tape.

Qu'est-ce que le Gradient Tape ?

Ce chapitre aborde l'un des concepts fondamentaux de TensorFlow, le Gradient Tape. Cette fonctionnalité est essentielle pour comprendre et mettre en œuvre les techniques d'optimisation basées sur le gradient, en particulier dans l'apprentissage profond.

Le Gradient Tape dans TensorFlow est un outil qui enregistre les opérations pour la différentiation automatique. Lorsque des opérations sont effectuées à l'intérieur d'un bloc Gradient Tape, TensorFlow suit toutes les opérations de calcul effectuées. Ceci est particulièrement utile pour l'entraînement des modèles d'apprentissage automatique, où les gradients sont nécessaires pour optimiser les paramètres du modèle.

Note
Note

Essentiellement, un gradient est un ensemble de dérivées partielles.

Utilisation de Gradient Tape

Pour utiliser Gradient Tape, suivre les étapes suivantes :

  • Créer un bloc Gradient Tape : utiliser with tf.GradientTape() as tape:. À l'intérieur de ce bloc, tous les calculs sont suivis ;
  • Définir les calculs : effectuer des opérations avec des tenseurs dans le bloc (par exemple, définir une passe avant d'un réseau de neurones) ;
  • Calculer les gradients : utiliser tape.gradient(target, sources) pour calculer les gradients de la cible par rapport aux sources.

Calcul de gradient simple

Un exemple simple pour mieux comprendre.

123456789101112131415
import tensorflow as tf # Define input variables x = tf.Variable(3.0) # Start recording the operations with tf.GradientTape() as tape: # Define the calculations y = x * x # Extract the gradient for the specific input (`x`) grad = tape.gradient(y, x) print(f'Result of y: {y}') print(f'The gradient of y with respect to x is: {grad.numpy()}')

Ce code calcule le gradient de y = x^2 en x = 3. Cela correspond à la dérivée partielle de y par rapport à x.

dérivée_simple

Plusieurs dérivées partielles

Lorsque la sortie est influencée par plusieurs entrées, une dérivée partielle peut être calculée par rapport à chacune de ces entrées (ou seulement certaines d'entre elles). Cela s'effectue en fournissant une liste de variables comme paramètre sources.

Le résultat de cette opération sera une liste de tenseurs correspondante, où chaque tenseur représente la dérivée partielle par rapport à chacune des variables spécifiées dans sources.

1234567891011121314151617
import tensorflow as tf # Define input variables x = tf.Variable(tf.fill((2, 3), 3.0)) z = tf.Variable(5.0) # Start recording the operations with tf.GradientTape() as tape: # Define the calculations y = tf.reduce_sum(x * x + 2 * z) # Extract the gradient for the specific inputs (`x` and `z`) grad = tape.gradient(y, [x, z]) print(f'Result of y: {y}') print(f"The gradient of y with respect to x is:\n{grad[0].numpy()}") print(f"The gradient of y with respect to z is: {grad[1].numpy()}")

Ce code calcule le gradient de la fonction y = sum(x^2 + 2*z) pour des valeurs données de x et z. Dans cet exemple, le gradient de x est présenté sous forme de tenseur 2D, où chaque élément correspond à la dérivée partielle de la valeur respective dans la matrice x d'origine.

dérivées partielles
Description de l'exemple
expand arrow

Calcul du gradient par rapport à x

Lorsque nous calculons la dérivée de y par rapport à x, nous cherchons essentiellement à savoir : « Si nous modifions légèrement la valeur de x, de combien y change-t-il ? » L'opération appliquée à x est l'élévation au carré (x^2), donc la dérivée nous indique que pour chaque augmentation d'une unité de x, y augmentera de 2*x.

Puisque tous les éléments de x valent 3.0 :

  • Le gradient de chaque élément est 2*3.0 = 6.0 ;
  • La matrice du gradient par rapport à x a la même forme que x (2x3), où chaque élément vaut 6.0. Cela indique qu'une augmentation d'une unité de n'importe quel élément de x entraînera une augmentation de 6 unités de y.

Calcul du gradient par rapport à z

Pour z, nous considérons comment les variations de z affectent y. Puisque z est ajouté à chaque élément au carré de x (après multiplication par deux), nous nous demandons : « Si z augmente de 1, de combien y augmente-t-il ? » Selon les règles de broadcasting, 2*z est ajouté à chaque élément de x^2, comme si nous avions une matrice de la même taille que x, remplie de 2*z.

  • L'opération 2*z par rapport à z est directe : sa dérivée est 2 car 2*z varie de 2 unités pour chaque variation d'une unité de z ;
  • Cependant, comme cette opération affecte chaque élément de la matrice x, le changement total de y pour une variation d'une unité de z est de 2 multiplié par le nombre d'éléments de x (soit 6, pour la matrice 2x3). Ainsi, le gradient total par rapport à z est 2*6 = 12. Cela signifie qu'une augmentation d'une unité de z entraîne une augmentation de 12 unités de y, reflétant l'effet combiné de la variation sur tous les éléments de x.

Résumé

  • Le gradient par rapport à x est une matrice qui montre qu'une augmentation d'une unité de n'importe quel élément de x entraîne une augmentation de 6 unités de y, reflétant la relation directe entre les variations de x et celles de y ;
  • Le gradient par rapport à z est un scalaire (12), indiquant l'effet total d'une augmentation d'une unité de z sur y, en tenant compte de l'impact sur l'ensemble de la matrice x.
Note
Remarque

Pour des informations complémentaires sur les fonctionnalités de Gradient Tape, y compris les dérivées d'ordre supérieur et l'extraction de la matrice Jacobienne, consultez la TensorFlow documentation.

Tâche

Glissez pour commencer à coder

Votre objectif est de calculer le gradient (dérivée) d'une fonction mathématique donnée en un point spécifié à l'aide du Gradient Tape de TensorFlow. La fonction et le point seront fournis, et vous verrez comment utiliser TensorFlow pour trouver le gradient en ce point.

Considérez une fonction quadratique d'une seule variable x, définie comme suit :

f(x) = x^2 + 2x - 1

Votre tâche consiste à calculer la dérivée de cette fonction en x = 2.

Étapes

  1. Définir la variable x au point où vous souhaitez calculer la dérivée.
  2. Utiliser Gradient Tape pour enregistrer le calcul de la fonction f(x).
  3. Calculer le gradient de f(x) au point spécifié.

Remarque

Le gradient ne peut être calculé que pour des valeurs de type flottant.

Derivative of a Function at a Point

Solution

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 2
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