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.
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.
123456789101112131415import 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.
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.
1234567891011121314151617import 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.
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 à
xa la même forme quex(2x3), où chaque élément vaut 6.0. Cela indique qu'une augmentation d'une unité de n'importe quel élément dexentraînera une augmentation de 6 unités dey.
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*zpar rapport àzest directe : sa dérivée est 2 car2*zvarie de 2 unités pour chaque variation d'une unité dez; - Cependant, comme cette opération affecte chaque élément de la matrice
x, le changement total deypour une variation d'une unité dezest de2multiplié par le nombre d'éléments dex(soit 6, pour la matrice 2x3). Ainsi, le gradient total par rapport àzest2*6 = 12. Cela signifie qu'une augmentation d'une unité dezentraîne une augmentation de 12 unités dey, reflétant l'effet combiné de la variation sur tous les éléments dex.
Résumé
- Le gradient par rapport à
xest une matrice qui montre qu'une augmentation d'une unité de n'importe quel élément dexentraîne une augmentation de 6 unités dey, reflétant la relation directe entre les variations dexet celles dey; - Le gradient par rapport à
zest un scalaire (12), indiquant l'effet total d'une augmentation d'une unité dezsury, en tenant compte de l'impact sur l'ensemble de la matricex.
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.
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
- Définir la variable
xau point où vous souhaitez calculer la dérivée. - Utiliser Gradient Tape pour enregistrer le calcul de la fonction
f(x). - Calculer le gradient de
f(x)au point spécifié.
Remarque
Le gradient ne peut être calculé que pour des valeurs de type flottant.

Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion