Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Grafudførelse | Grundlæggende om TensorFlow
Introduktion til Tensorflow

bookGrafudførelse

Funktionsdekoration

En funktionsdekoration er et værktøj, der 'omslutter' en funktion for at ændre dens opførsel. I TensorFlow er den mest anvendte dekoration @tf.function, som konverterer en Python-funktion til en TensorFlow-graf.

Formål med @tf.function

Det primære formål med at anvende dekorationer som @tf.function er at optimere beregninger. Når en funktion dekoreres med @tf.function, konverterer TensorFlow funktionen til en meget effektiv graf, der kan udføres langt hurtigere, især ved komplekse operationer. Denne konvertering gør det muligt for TensorFlow at anvende optimeringer og udnytte parallelisering, hvilket er afgørende for ydeevnen i maskinlæringsopgaver.

Eksempel

Et eksempel gives for bedre forståelse.

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

I denne kode bliver compute_area() konverteret til en TensorFlow-graf, hvilket gør den hurtigere og mere effektiv.

Hvordan fungerer grafudførelse?

TensorFlow opererer i to tilstande: Eager Execution og Graph Execution. Som standard kører TensorFlow i Eager Execution-tilstand, hvilket betyder, at operationer udføres, efterhånden som de defineres, hvilket giver en fleksibel og intuitiv grænseflade. Dog kan Eager Execution være mindre effektiv for komplekse beregninger og store modeller.

Her kommer @tf.function og grafudførelse ind i billedet. Når du bruger @tf.function-dekorationen på en funktion, konverterer TensorFlow denne funktion til en statisk beregningsgraf af operationer.

Optimeringsteknikker

  1. Grafoptimering: TensorFlow optimerer grafen ved at beskære ubrugte noder, sammenflette duplikerede undergrafer og udføre andre optimeringer på grafniveau. Dette resulterer i hurtigere eksekvering og reduceret hukommelsesforbrug.
  2. Hurtigere eksekvering: Grafer eksekveres hurtigere end ivrige operationer, fordi de reducerer Python-overhead. Python er ikke involveret i eksekveringen af grafen, hvilket eliminerer overhead fra Python-fortolkeren.
  3. Parallelisering og distribution: Grafer gør det muligt for TensorFlow nemt at identificere muligheder for parallelisering og fordele beregninger på tværs af flere enheder, såsom CPU'er og GPU'er.
  4. Caching og genbrug: Når en funktion dekoreret med @tf.function kaldes med samme inputsignatur, genbruger TensorFlow den tidligere oprettede graf, hvilket undgår behovet for at genskabe grafen og sparer tid.

Eksempel med 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

I dette eksempel er compute_gradient en funktion, der beregner gradienten af y = x^3 ved et givet punkt x. Dekoratoren @tf.function sikrer, at funktionen udføres som en TensorFlow-graf.

Eksempel med betinget logik

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

I dette eksempel beregner funktionen forskellige gradienter baseret på en betingelse. TensorFlows @tf.function konverterer ikke kun den statiske beregningsgraf, men håndterer også dynamiske elementer som betingelser og løkker effektivt.

Opgave

Swipe to start coding

I denne opgave skal du sammenligne eksekveringstiderne for to TensorFlow-funktioner, der udfører matrixmultiplikation: én med @tf.function-dekorationen og én uden.

Trin

  1. Definér funktionen matrix_multiply_optimized, og sørg for, at den inkluderer @tf.function-dekorationen.
  2. Fuldfør begge funktioner ved at beregne gennemsnittet af de resulterende matricer.
  3. Generér to ensartet fordelte tilfældige matricer ved hjælp af TensorFlows funktioner til generering af tilfældige matricer.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 2
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you explain the difference between Eager Execution and Graph Execution in more detail?

How does TensorFlow handle conditionals and loops inside a @tf.function?

Can you provide more examples of using @tf.function with different types of functions?

close

Awesome!

Completion rate improved to 5.56

bookGrafudførelse

Stryg for at vise menuen

Funktionsdekoration

En funktionsdekoration er et værktøj, der 'omslutter' en funktion for at ændre dens opførsel. I TensorFlow er den mest anvendte dekoration @tf.function, som konverterer en Python-funktion til en TensorFlow-graf.

Formål med @tf.function

Det primære formål med at anvende dekorationer som @tf.function er at optimere beregninger. Når en funktion dekoreres med @tf.function, konverterer TensorFlow funktionen til en meget effektiv graf, der kan udføres langt hurtigere, især ved komplekse operationer. Denne konvertering gør det muligt for TensorFlow at anvende optimeringer og udnytte parallelisering, hvilket er afgørende for ydeevnen i maskinlæringsopgaver.

Eksempel

Et eksempel gives for bedre forståelse.

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

I denne kode bliver compute_area() konverteret til en TensorFlow-graf, hvilket gør den hurtigere og mere effektiv.

Hvordan fungerer grafudførelse?

TensorFlow opererer i to tilstande: Eager Execution og Graph Execution. Som standard kører TensorFlow i Eager Execution-tilstand, hvilket betyder, at operationer udføres, efterhånden som de defineres, hvilket giver en fleksibel og intuitiv grænseflade. Dog kan Eager Execution være mindre effektiv for komplekse beregninger og store modeller.

Her kommer @tf.function og grafudførelse ind i billedet. Når du bruger @tf.function-dekorationen på en funktion, konverterer TensorFlow denne funktion til en statisk beregningsgraf af operationer.

Optimeringsteknikker

  1. Grafoptimering: TensorFlow optimerer grafen ved at beskære ubrugte noder, sammenflette duplikerede undergrafer og udføre andre optimeringer på grafniveau. Dette resulterer i hurtigere eksekvering og reduceret hukommelsesforbrug.
  2. Hurtigere eksekvering: Grafer eksekveres hurtigere end ivrige operationer, fordi de reducerer Python-overhead. Python er ikke involveret i eksekveringen af grafen, hvilket eliminerer overhead fra Python-fortolkeren.
  3. Parallelisering og distribution: Grafer gør det muligt for TensorFlow nemt at identificere muligheder for parallelisering og fordele beregninger på tværs af flere enheder, såsom CPU'er og GPU'er.
  4. Caching og genbrug: Når en funktion dekoreret med @tf.function kaldes med samme inputsignatur, genbruger TensorFlow den tidligere oprettede graf, hvilket undgår behovet for at genskabe grafen og sparer tid.

Eksempel med 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

I dette eksempel er compute_gradient en funktion, der beregner gradienten af y = x^3 ved et givet punkt x. Dekoratoren @tf.function sikrer, at funktionen udføres som en TensorFlow-graf.

Eksempel med betinget logik

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

I dette eksempel beregner funktionen forskellige gradienter baseret på en betingelse. TensorFlows @tf.function konverterer ikke kun den statiske beregningsgraf, men håndterer også dynamiske elementer som betingelser og løkker effektivt.

Opgave

Swipe to start coding

I denne opgave skal du sammenligne eksekveringstiderne for to TensorFlow-funktioner, der udfører matrixmultiplikation: én med @tf.function-dekorationen og én uden.

Trin

  1. Definér funktionen matrix_multiply_optimized, og sørg for, at den inkluderer @tf.function-dekorationen.
  2. Fuldfør begge funktioner ved at beregne gennemsnittet af de resulterende matricer.
  3. Generér to ensartet fordelte tilfældige matricer ved hjælp af TensorFlows funktioner til generering af tilfældige matricer.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 2
single

single

some-alt