Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Grafiekuitvoering | Sectie
Deep Learning met TensorFlow
Sectie 1. Hoofdstuk 14
single

single

bookGrafiekuitvoering

Veeg om het menu te tonen

Een Function Decorator is een hulpmiddel dat een functie 'omsluit' om het gedrag ervan aan te passen. In TensorFlow is de meest gebruikte decorator @tf.function, die een Python-functie omzet in een TensorFlow-grafiek.

Doel van @tf.function

Het primaire doel van het gebruik van decorators zoals @tf.function is het optimaliseren van berekeningen. Wanneer een functie wordt gedecoreerd met @tf.function, zet TensorFlow de functie om in een zeer efficiënte grafiek die veel sneller kan worden uitgevoerd, vooral bij complexe bewerkingen. Deze omzetting stelt TensorFlow in staat om optimalisaties toe te passen en parallelisme te benutten, wat essentieel is voor de prestaties bij machine learning-taken.

Voorbeeld

Een voorbeeld wordt gegeven ter verduidelijking.

1234567891011
import tensorflow as tf # Define a simple function and decorate it with `@tf.function` @tf.function def compute_area(radius): return 3.1415 * radius ** 2 # Call the function area = compute_area(tf.constant(3.0)) print(f"The area is: {area.numpy()}")
copy

In deze code wordt compute_area() omgezet in een TensorFlow-grafiek, waardoor deze sneller en efficiënter wordt uitgevoerd.

Hoe werkt grafiekuitvoering?

TensorFlow werkt in twee modi: Eager Execution en Graph Execution. Standaard draait TensorFlow in Eager Execution-modus, wat betekent dat bewerkingen worden uitgevoerd zodra ze zijn gedefinieerd, wat een flexibele en intuïtieve interface biedt. Echter, Eager Execution kan minder efficiënt zijn voor complexe berekeningen en grootschalige modellen.

Hier komen @tf.function en Graph Execution in beeld. Wanneer de @tf.function-decorator op een functie wordt toegepast, zet TensorFlow die functie om in een statische berekeningsgrafiek van operaties.

Optimalisatietechnieken

  1. Grafiekoptimalisatie: TensorFlow optimaliseert het computationele grafiek door ongebruikte knooppunten te verwijderen, dubbele subgrafieken samen te voegen en andere optimalisaties op grafiekniveau uit te voeren. Dit resulteert in snellere uitvoering en verminderd geheugengebruik.
  2. Snellere uitvoering: grafieken worden sneller uitgevoerd dan eager-operaties omdat ze de overhead van Python verminderen. Python is niet betrokken bij de uitvoering van het grafiek, waardoor de overhead van Python-interpreteraanroepen wordt geëlimineerd.
  3. Parallelisme en distributie: grafieken stellen TensorFlow in staat om eenvoudig mogelijkheden voor parallelisme te identificeren en berekeningen te verdelen over meerdere apparaten, zoals CPU's en GPU's.
  4. Caching en hergebruik: wanneer een functie met @tf.function wordt aangeroepen met dezelfde input-handtekening, hergebruikt TensorFlow het eerder aangemaakte grafiek, waardoor het niet opnieuw hoeft te worden aangemaakt en tijd wordt bespaard.

Voorbeeld met Gradient Tape

1234567891011
import tensorflow as tf @tf.function def compute_gradient(x): with tf.GradientTape() as tape: y = x * x * x return tape.gradient(y, x) x = tf.Variable(3.0) grad = compute_gradient(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
copy

In dit voorbeeld is compute_gradient een functie die de gradiënt van y = x^3 berekent op een gegeven punt x. De @tf.function decorator zorgt ervoor dat de functie wordt uitgevoerd als een TensorFlow-grafiek.

Voorbeeld met conditionele logica

1234567891011121314
import tensorflow as tf @tf.function def compute_gradient_conditional(x): with tf.GradientTape() as tape: if tf.reduce_sum(x) > 0: y = x * x else: y = x * x * x return tape.gradient(y, x) x = tf.Variable([-2.0, 2.0]) grad = compute_gradient_conditional(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
copy

In dit voorbeeld berekent de functie verschillende gradiënten op basis van een voorwaarde. TensorFlow's @tf.function zet niet alleen het statische computationele graaf om, maar verwerkt ook dynamische elementen zoals conditionals en lussen effectief.

Taak

Swipe to start coding

In deze taak ga je de uitvoeringstijden vergelijken van twee TensorFlow-functies die matrixvermenigvuldiging uitvoeren: één met de @tf.function decorator en één zonder.

  1. Definieer de functie matrix_multiply_optimized en zorg ervoor dat deze de @tf.function decorator bevat.
  2. Maak beide functies compleet door het gemiddelde van de resulterende matrices te berekenen.
  3. Genereer twee uniform verdeelde willekeurige matrices met behulp van TensorFlow's functies voor het genereren van willekeurige matrices.

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 1. Hoofdstuk 14
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