Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Reduktionsoperationer | Tensor Operations and Execution
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion til Tensorflow

bookReduktionsoperationer

Reduktionsoperationer

Inden for tensoroperationer opstår der ofte behov for at reducere dimensionerne af data, enten ved at opsummere på én eller flere akser. For eksempel, hvis vi har en 2D-tensor (en matrix), kan en reduktionsoperation beregne en værdi for hver række eller kolonne, hvilket resulterer i en 1D-tensor (en vektor). TensorFlow tilbyder en række operationer til dette formål, og i dette kapitel gennemgår vi de mest anvendte reduktionsoperationer.

Sum, Gennemsnit, Maksimum og Minimum

TensorFlow tilbyder følgende metoder til disse beregninger:

  • tf.reduce_sum(): beregner summen af alle elementer i tensoren eller langs en specifik akse;
  • tf.reduce_mean(): beregner gennemsnittet af tensorens elementer;
  • tf.reduce_max(): bestemmer maksimumsværdien i tensoren;
  • tf.reduce_min(): finder minimumsværdien i tensoren.
12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) # Calculate sum of all elements total_sum = tf.reduce_sum(tensor) print("Total Sum:", total_sum.numpy()) # Calculate mean of all elements mean_val = tf.reduce_mean(tensor) print("Mean Value:", mean_val.numpy()) # Determine the maximum value max_val = tf.reduce_max(tensor) print("Maximum Value:", max_val.numpy()) # Find the minimum value min_val = tf.reduce_min(tensor) print("Minimum Value:", min_val.numpy())
copy
Note
Bemærk

Metoden .numpy() blev brugt til at konvertere tensorerne til NumPy-arrays, hvilket giver en tydeligere visuel præsentation af tallene ved visning.

Operationer langs specifikke akser

Tensores kan have flere dimensioner, og nogle gange ønsker vi at udføre reduktioner langs en specifik akse. Parameteren axis gør det muligt at angive, hvilken akse eller hvilke akser vi vil reducere.

  • axis=0: udfør operationen langs rækkerne (resulterer i en kolonnevektor);
  • axis=1: udfør operationen langs kolonnerne (resulterer i en rækkevektor);
  • Det er muligt at reducere langs flere akser samtidigt ved at angive en liste til parameteren axis;
  • Når tensorens rang reduceres, kan du bruge keepdims=True for at bevare den reducerede dimension som 1.

For en 2D-tensor (matrix):

1234567891011121314151617181920
import tensorflow as tf tensor = tf.constant([[1., 2.], [3., 4.], [5., 6.]]) # Calculate the sum of each column col_sum = tf.reduce_sum(tensor, axis=0) print("Column-wise Sum:", col_sum.numpy()) # Calculate the maximum of each row col_max = tf.reduce_max(tensor, axis=1) print("Row-wise Max:", col_max.numpy()) # Calculate the mean of the whole tensor (reduce along both directions) # Equivalent to not specifying the axis at all total_mean = tf.reduce_mean(tensor, axis=(0, 1)) print("Total Mean:", total_mean.numpy()) # Calculate the mean of the whole tensor (keeping reduced dimensions) total_mean_dim = tf.reduce_mean(tensor, axis=(0, 1), keepdims=True) print("Total Mean (saving dimensions):", total_mean_dim.numpy())
copy
Note
Bemærk

Når du udfører en reduktionsoperation langs en bestemt akse, eliminerer du i det væsentlige denne akse fra tensoren, og aggregerer alle tensorerne inden for denne akse elementvist. Den samme effekt gælder for et vilkårligt antal dimensioner.

Sådan ser det ud for en 3D-tensor:

12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]) # Calculate the sum along axis 0 sum_0 = tf.reduce_sum(tensor, axis=0) print("Sum axis 0:\n", sum_0.numpy()) # Calculate the sum along axis 1 sum_1 = tf.reduce_sum(tensor, axis=1) print("Sum axis 1:\n", sum_1.numpy()) # Calculate the sum along axes 0 and 1 sum_0_1 = tf.reduce_sum(tensor, axis=(0, 1)) print("Sum axes 0 and 1:\n", sum_0_1.numpy())
copy
Note
Bemærk

Mange andre reduktionsoperationer findes i TensorFlow, men de fungerer efter de samme principper.

Opgave

Swipe to start coding

Baggrund

Du er data scientist hos et vejrforskningsinstitut. Du har fået udleveret en tensor, der indeholder vejrmålinger fra forskellige byer over flere dage. Tensoren har følgende struktur:

  • Dimension 1: repræsenterer forskellige byer;
  • Dimension 2: repræsenterer forskellige dage.
  • Hver post i tensoren er et tuple af (temperature, humidity).

Formål

  1. Beregn gennemsnitstemperaturen for hver by over alle dage.
  2. Beregn maksimal luftfugtighed på tværs af alle byer for hver dag.

Bemærk

I denne tensor repræsenterer det første tal i hvert tuple temperaturen (i Celsius), og det andet tal repræsenterer luftfugtigheden (i procent) for den pågældende dag og by.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 4
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 what the axis parameter means in more detail?

How do I choose which axis to reduce along for my data?

What happens if I use keepdims=True in these operations?

close

Awesome!

Completion rate improved to 6.25

bookReduktionsoperationer

Stryg for at vise menuen

Reduktionsoperationer

Inden for tensoroperationer opstår der ofte behov for at reducere dimensionerne af data, enten ved at opsummere på én eller flere akser. For eksempel, hvis vi har en 2D-tensor (en matrix), kan en reduktionsoperation beregne en værdi for hver række eller kolonne, hvilket resulterer i en 1D-tensor (en vektor). TensorFlow tilbyder en række operationer til dette formål, og i dette kapitel gennemgår vi de mest anvendte reduktionsoperationer.

Sum, Gennemsnit, Maksimum og Minimum

TensorFlow tilbyder følgende metoder til disse beregninger:

  • tf.reduce_sum(): beregner summen af alle elementer i tensoren eller langs en specifik akse;
  • tf.reduce_mean(): beregner gennemsnittet af tensorens elementer;
  • tf.reduce_max(): bestemmer maksimumsværdien i tensoren;
  • tf.reduce_min(): finder minimumsværdien i tensoren.
12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]) # Calculate sum of all elements total_sum = tf.reduce_sum(tensor) print("Total Sum:", total_sum.numpy()) # Calculate mean of all elements mean_val = tf.reduce_mean(tensor) print("Mean Value:", mean_val.numpy()) # Determine the maximum value max_val = tf.reduce_max(tensor) print("Maximum Value:", max_val.numpy()) # Find the minimum value min_val = tf.reduce_min(tensor) print("Minimum Value:", min_val.numpy())
copy
Note
Bemærk

Metoden .numpy() blev brugt til at konvertere tensorerne til NumPy-arrays, hvilket giver en tydeligere visuel præsentation af tallene ved visning.

Operationer langs specifikke akser

Tensores kan have flere dimensioner, og nogle gange ønsker vi at udføre reduktioner langs en specifik akse. Parameteren axis gør det muligt at angive, hvilken akse eller hvilke akser vi vil reducere.

  • axis=0: udfør operationen langs rækkerne (resulterer i en kolonnevektor);
  • axis=1: udfør operationen langs kolonnerne (resulterer i en rækkevektor);
  • Det er muligt at reducere langs flere akser samtidigt ved at angive en liste til parameteren axis;
  • Når tensorens rang reduceres, kan du bruge keepdims=True for at bevare den reducerede dimension som 1.

For en 2D-tensor (matrix):

1234567891011121314151617181920
import tensorflow as tf tensor = tf.constant([[1., 2.], [3., 4.], [5., 6.]]) # Calculate the sum of each column col_sum = tf.reduce_sum(tensor, axis=0) print("Column-wise Sum:", col_sum.numpy()) # Calculate the maximum of each row col_max = tf.reduce_max(tensor, axis=1) print("Row-wise Max:", col_max.numpy()) # Calculate the mean of the whole tensor (reduce along both directions) # Equivalent to not specifying the axis at all total_mean = tf.reduce_mean(tensor, axis=(0, 1)) print("Total Mean:", total_mean.numpy()) # Calculate the mean of the whole tensor (keeping reduced dimensions) total_mean_dim = tf.reduce_mean(tensor, axis=(0, 1), keepdims=True) print("Total Mean (saving dimensions):", total_mean_dim.numpy())
copy
Note
Bemærk

Når du udfører en reduktionsoperation langs en bestemt akse, eliminerer du i det væsentlige denne akse fra tensoren, og aggregerer alle tensorerne inden for denne akse elementvist. Den samme effekt gælder for et vilkårligt antal dimensioner.

Sådan ser det ud for en 3D-tensor:

12345678910111213141516171819
import tensorflow as tf tensor = tf.constant([ [[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]] ]) # Calculate the sum along axis 0 sum_0 = tf.reduce_sum(tensor, axis=0) print("Sum axis 0:\n", sum_0.numpy()) # Calculate the sum along axis 1 sum_1 = tf.reduce_sum(tensor, axis=1) print("Sum axis 1:\n", sum_1.numpy()) # Calculate the sum along axes 0 and 1 sum_0_1 = tf.reduce_sum(tensor, axis=(0, 1)) print("Sum axes 0 and 1:\n", sum_0_1.numpy())
copy
Note
Bemærk

Mange andre reduktionsoperationer findes i TensorFlow, men de fungerer efter de samme principper.

Opgave

Swipe to start coding

Baggrund

Du er data scientist hos et vejrforskningsinstitut. Du har fået udleveret en tensor, der indeholder vejrmålinger fra forskellige byer over flere dage. Tensoren har følgende struktur:

  • Dimension 1: repræsenterer forskellige byer;
  • Dimension 2: repræsenterer forskellige dage.
  • Hver post i tensoren er et tuple af (temperature, humidity).

Formål

  1. Beregn gennemsnitstemperaturen for hver by over alle dage.
  2. Beregn maksimal luftfugtighed på tværs af alle byer for hver dag.

Bemærk

I denne tensor repræsenterer det første tal i hvert tuple temperaturen (i Celsius), og det andet tal repræsenterer luftfugtigheden (i procent) for den pågældende dag og by.

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 4
single

single

some-alt