Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Gradiententape | Basisprincipes van TensorFlow
Introductie tot TensorFlow

Gradiententape

Gradient Tape

Inzicht in fundamentele tensorbewerkingen maakt het mogelijk om deze processen te stroomlijnen en te versnellen met behulp van ingebouwde TensorFlow-functionaliteiten. Het eerste van deze geavanceerde hulpmiddelen dat wordt behandeld is Gradient Tape.

Wat is Gradient Tape?

Dit hoofdstuk behandelt een van de fundamentele concepten in TensorFlow, de Gradient Tape. Deze functionaliteit is essentieel voor het begrijpen en toepassen van gradient-gebaseerde optimalisatietechnieken, met name in deep learning.

Gradient Tape in TensorFlow is een hulpmiddel dat bewerkingen registreert voor automatische differentiatie. Wanneer bewerkingen binnen een Gradient Tape-blok worden uitgevoerd, houdt TensorFlow alle uitgevoerde berekeningen bij. Dit is vooral nuttig bij het trainen van machine learning-modellen, waarbij gradiënten nodig zijn om modelparameters te optimaliseren.

Note
Opmerking

In essentie is een gradiënt een verzameling partiële afgeleiden.

Gebruik van Gradient Tape

Voor het gebruik van Gradient Tape, volg deze stappen:

  • Maak een Gradient Tape-blok aan: gebruik with tf.GradientTape() as tape:. Binnen dit blok worden alle berekeningen gevolgd;
  • Definieer de berekeningen: voer operaties uit met tensors binnen het blok (bijvoorbeeld het definiëren van een forward pass van een neuraal netwerk);
  • Bereken de gradiënten: gebruik tape.gradient(target, sources) om de gradiënten van het doelwit ten opzichte van de bronnen te berekenen.

Eenvoudige gradiëntberekening

Een eenvoudig voorbeeld om dit beter te begrijpen.

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()}')

Deze code berekent de gradiënt van y = x^2 bij x = 3. Dit is hetzelfde als de partiële afgeleide van y ten opzichte van x.

eenvoudige_afgeleide

Meerdere partiële afgeleiden

Wanneer de output wordt beïnvloed door meerdere invoervariabelen, kan een partiële afgeleide worden berekend ten opzichte van elk van deze invoervariabelen (of slechts een geselecteerde subset). Dit wordt bereikt door een lijst van variabelen op te geven als de parameter sources.

De uitvoer van deze bewerking zal een overeenkomstige lijst van tensors zijn, waarbij elke tensor de partiële afgeleide voorstelt ten opzichte van elk van de in sources opgegeven variabelen.

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()}")

Deze code berekent de gradiënt van de functie y = sum(x^2 + 2*z) voor gegeven waarden van x en z. In dit voorbeeld wordt de gradiënt van x weergegeven als een 2D-tensor, waarbij elk element overeenkomt met de partiële afgeleide van de respectievelijke waarde in de oorspronkelijke x-matrix.

partiële_afgeleiden
Voorbeeldbeschrijving
expand arrow

De gradiënt berekenen ten opzichte van x

Wanneer we de afgeleide van y ten opzichte van x berekenen, vragen we ons in feite af: "Als we de waarde van x een beetje veranderen, hoeveel verandert y dan?" De bewerking op x is kwadrateren (x^2), dus de afgeleide vertelt ons dat voor elke eenheidstoename in x, y zal toenemen met 2*x.

Aangezien alle elementen van x gelijk zijn aan 3.0:

  • De gradiënt van elk element is 2*3.0 = 6.0;
  • De gradiëntmatrix ten opzichte van x heeft dezelfde vorm als x zelf (2x3), waarbij elk element 6.0 is. Dit geeft aan dat het verhogen van elk afzonderlijk element van x met 1, y met 6 eenheden zou verhogen.

De gradiënt berekenen ten opzichte van z

Voor z bekijken we hoe veranderingen in z van invloed zijn op y. Omdat z wordt opgeteld bij elk gekwadrateerd element van x (na verdubbeling), vragen we ons in feite af: "Als z met 1 toeneemt, hoeveel neemt y dan toe?" Volgens de regels van broadcasting wordt 2*z opgeteld bij elk element van x^2, alsof we een matrix hebben ter grootte van x, gevuld met 2*z.

  • De bewerking van 2*z ten opzichte van z is eenvoudig: de afgeleide is 2, omdat 2*z met 2 eenheden verandert voor elke eenheidstoename in z;
  • Omdat deze bewerking echter elk element van de matrix x beïnvloedt, is de totale verandering in y voor een eenheidstoename in z gelijk aan 2 maal het aantal elementen in x (dat is 6, van de 2x3 matrix). Dus de totale gradiënt ten opzichte van z is 2*6 = 12. Dit betekent dat het verhogen van z met 1 eenheid, y met 12 eenheden verhoogt, wat het gecombineerde effect van de verandering over alle elementen van x weerspiegelt.

Samenvatting

  • De gradiënt ten opzichte van x is een matrix die laat zien hoe een eenheidstoename in elk element van x leidt tot een toename van 6 eenheden in y, wat de directe relatie tussen veranderingen in x en veranderingen in y weergeeft;
  • De gradiënt ten opzichte van z is een scalair (12), die het totale effect toont van een eenheidstoename in z op y, rekening houdend met de impact over de gehele matrix x.
Note
Opmerking

Voor meer informatie over de mogelijkheden van Gradient Tape, waaronder hogere-orde afgeleiden en het extraheren van de Jacobiaanmatrix, raadpleeg de officiële TensorFlow documentation.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 2
single

single

Gradiententape

Veeg om het menu te tonen

Gradient Tape

Inzicht in fundamentele tensorbewerkingen maakt het mogelijk om deze processen te stroomlijnen en te versnellen met behulp van ingebouwde TensorFlow-functionaliteiten. Het eerste van deze geavanceerde hulpmiddelen dat wordt behandeld is Gradient Tape.

Wat is Gradient Tape?

Dit hoofdstuk behandelt een van de fundamentele concepten in TensorFlow, de Gradient Tape. Deze functionaliteit is essentieel voor het begrijpen en toepassen van gradient-gebaseerde optimalisatietechnieken, met name in deep learning.

Gradient Tape in TensorFlow is een hulpmiddel dat bewerkingen registreert voor automatische differentiatie. Wanneer bewerkingen binnen een Gradient Tape-blok worden uitgevoerd, houdt TensorFlow alle uitgevoerde berekeningen bij. Dit is vooral nuttig bij het trainen van machine learning-modellen, waarbij gradiënten nodig zijn om modelparameters te optimaliseren.

Note
Opmerking

In essentie is een gradiënt een verzameling partiële afgeleiden.

Gebruik van Gradient Tape

Voor het gebruik van Gradient Tape, volg deze stappen:

  • Maak een Gradient Tape-blok aan: gebruik with tf.GradientTape() as tape:. Binnen dit blok worden alle berekeningen gevolgd;
  • Definieer de berekeningen: voer operaties uit met tensors binnen het blok (bijvoorbeeld het definiëren van een forward pass van een neuraal netwerk);
  • Bereken de gradiënten: gebruik tape.gradient(target, sources) om de gradiënten van het doelwit ten opzichte van de bronnen te berekenen.

Eenvoudige gradiëntberekening

Een eenvoudig voorbeeld om dit beter te begrijpen.

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()}')

Deze code berekent de gradiënt van y = x^2 bij x = 3. Dit is hetzelfde als de partiële afgeleide van y ten opzichte van x.

eenvoudige_afgeleide

Meerdere partiële afgeleiden

Wanneer de output wordt beïnvloed door meerdere invoervariabelen, kan een partiële afgeleide worden berekend ten opzichte van elk van deze invoervariabelen (of slechts een geselecteerde subset). Dit wordt bereikt door een lijst van variabelen op te geven als de parameter sources.

De uitvoer van deze bewerking zal een overeenkomstige lijst van tensors zijn, waarbij elke tensor de partiële afgeleide voorstelt ten opzichte van elk van de in sources opgegeven variabelen.

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()}")

Deze code berekent de gradiënt van de functie y = sum(x^2 + 2*z) voor gegeven waarden van x en z. In dit voorbeeld wordt de gradiënt van x weergegeven als een 2D-tensor, waarbij elk element overeenkomt met de partiële afgeleide van de respectievelijke waarde in de oorspronkelijke x-matrix.

partiële_afgeleiden
Voorbeeldbeschrijving
expand arrow

De gradiënt berekenen ten opzichte van x

Wanneer we de afgeleide van y ten opzichte van x berekenen, vragen we ons in feite af: "Als we de waarde van x een beetje veranderen, hoeveel verandert y dan?" De bewerking op x is kwadrateren (x^2), dus de afgeleide vertelt ons dat voor elke eenheidstoename in x, y zal toenemen met 2*x.

Aangezien alle elementen van x gelijk zijn aan 3.0:

  • De gradiënt van elk element is 2*3.0 = 6.0;
  • De gradiëntmatrix ten opzichte van x heeft dezelfde vorm als x zelf (2x3), waarbij elk element 6.0 is. Dit geeft aan dat het verhogen van elk afzonderlijk element van x met 1, y met 6 eenheden zou verhogen.

De gradiënt berekenen ten opzichte van z

Voor z bekijken we hoe veranderingen in z van invloed zijn op y. Omdat z wordt opgeteld bij elk gekwadrateerd element van x (na verdubbeling), vragen we ons in feite af: "Als z met 1 toeneemt, hoeveel neemt y dan toe?" Volgens de regels van broadcasting wordt 2*z opgeteld bij elk element van x^2, alsof we een matrix hebben ter grootte van x, gevuld met 2*z.

  • De bewerking van 2*z ten opzichte van z is eenvoudig: de afgeleide is 2, omdat 2*z met 2 eenheden verandert voor elke eenheidstoename in z;
  • Omdat deze bewerking echter elk element van de matrix x beïnvloedt, is de totale verandering in y voor een eenheidstoename in z gelijk aan 2 maal het aantal elementen in x (dat is 6, van de 2x3 matrix). Dus de totale gradiënt ten opzichte van z is 2*6 = 12. Dit betekent dat het verhogen van z met 1 eenheid, y met 12 eenheden verhoogt, wat het gecombineerde effect van de verandering over alle elementen van x weerspiegelt.

Samenvatting

  • De gradiënt ten opzichte van x is een matrix die laat zien hoe een eenheidstoename in elk element van x leidt tot een toename van 6 eenheden in y, wat de directe relatie tussen veranderingen in x en veranderingen in y weergeeft;
  • De gradiënt ten opzichte van z is een scalair (12), die het totale effect toont van een eenheidstoename in z op y, rekening houdend met de impact over de gehele matrix x.
Note
Opmerking

Voor meer informatie over de mogelijkheden van Gradient Tape, waaronder hogere-orde afgeleiden en het extraheren van de Jacobiaanmatrix, raadpleeg de officiële TensorFlow documentation.

Taak

Veeg om te beginnen met coderen

Je doel is om de gradiënt (afgeleide) van een gegeven wiskundige functie op een specifiek punt te berekenen met behulp van TensorFlow's Gradient Tape. De functie en het punt worden gegeven, en je zult zien hoe je TensorFlow gebruikt om de gradiënt op dat punt te vinden.

Beschouw een kwadratische functie van één variabele x, gedefinieerd als:

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

Je taak is om de afgeleide van deze functie te berekenen bij x = 2.

Stappen

  1. Definieer de variabele x op het punt waar je de afgeleide wilt berekenen.
  2. Gebruik Gradient Tape om de berekening van de functie f(x) vast te leggen.
  3. Bereken de gradiënt van f(x) op het gespecificeerde punt.

Opmerking

De gradiënt kan alleen worden berekend voor waarden van het floating-point type.

Derivative of a Function at a Point

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 2
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt