Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Reduksjonsoperasjoner | Tensores
Introduksjon til TensorFlow

bookReduksjonsoperasjoner

Reduksjonsoperasjoner

Innenfor tensoroperasjoner finnes det mange oppgaver hvor vi må redusere dimensjonene til dataene våre, enten ved å oppsummere dem over én eller flere akser. For eksempel, hvis vi har en 2D-tensor (en matrise), kan en reduksjonsoperasjon beregne en verdi for hver rad eller hver kolonne, noe som resulterer i en 1D-tensor (en vektor). TensorFlow tilbyr et sett med operasjoner for dette, og i dette kapittelet skal vi utforske de mest brukte reduksjonsoperasjonene.

Sum, Gjennomsnitt, Maksimum og Minimum

TensorFlow tilbyr følgende metoder for disse beregningene:

  • tf.reduce_sum(): beregner summen av alle elementene i tensoren eller langs en spesifikk akse;
  • tf.reduce_mean(): kalkulerer gjennomsnittet av elementene i tensoren;
  • tf.reduce_max(): finner maksimumsverdien i tensoren;
  • tf.reduce_min(): finner minimumsverdien 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
Merk

Metoden .numpy() ble brukt for å konvertere tensorene til NumPy-arrays, noe som gir en tydeligere visuell fremstilling av tallene når de vises.

Operasjoner langs spesifikke akser

Tensores kan ha flere dimensjoner, og noen ganger ønsker vi å utføre reduksjoner langs en spesifikk akse. Parameteren axis lar oss spesifisere hvilken akse eller hvilke akser vi ønsker å redusere.

  • axis=0: utfører operasjonen langs radene (resulterer i en kolonnevektor);
  • axis=1: utfører operasjonen langs kolonnene (resulterer i en radvektor);
  • Det er mulig å redusere langs flere akser samtidig ved å gi en liste til parameteren axis;
  • Når tensorens rang reduseres, kan du bruke keepdims=True for å beholde den reduserte dimensjonen som 1.

For en 2D-tensor (matrise):

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
Merk

Når du utfører en reduksjonsoperasjon langs en spesifikk akse, eliminerer du i praksis denne aksen fra tensoren, og aggregerer alle tensorene innenfor denne aksen elementvis. Den samme effekten gjelder uansett antall dimensjoner.

Slik ser det ut 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
Merk

Mange andre reduksjonsoperasjoner finnes i TensorFlow, men de fungerer etter de samme prinsippene.

Oppgave

Swipe to start coding

Bakgrunn

Du er en dataforsker ved et værforskningsbyrå. Du har fått et tensor som inneholder værmålinger fra ulike byer over flere dager. Tensoren har følgende struktur:

  • Dimensjon 1: representerer forskjellige byer;
  • Dimensjon 2: representerer forskjellige dager.
  • Hver oppføring i tensoren er et tuppel av (temperature, humidity).

Mål

  1. Beregn gjennomsnittstemperaturen for hver by over alle dager.
  2. Beregn maksimal luftfuktighet på tvers av alle byer for hver dag.

Merk

I denne tensoren representerer det første tallet i hvert tuppel temperaturen (i Celsius), og det andre tallet representerer luftfuktigheten (i prosent) for den aktuelle dagen og byen.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 12
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain what the axis parameter means in more detail?

How does keepdims=True affect the output shape?

Can you show more examples with higher-dimensional tensors?

close

Awesome!

Completion rate improved to 5.56

bookReduksjonsoperasjoner

Sveip for å vise menyen

Reduksjonsoperasjoner

Innenfor tensoroperasjoner finnes det mange oppgaver hvor vi må redusere dimensjonene til dataene våre, enten ved å oppsummere dem over én eller flere akser. For eksempel, hvis vi har en 2D-tensor (en matrise), kan en reduksjonsoperasjon beregne en verdi for hver rad eller hver kolonne, noe som resulterer i en 1D-tensor (en vektor). TensorFlow tilbyr et sett med operasjoner for dette, og i dette kapittelet skal vi utforske de mest brukte reduksjonsoperasjonene.

Sum, Gjennomsnitt, Maksimum og Minimum

TensorFlow tilbyr følgende metoder for disse beregningene:

  • tf.reduce_sum(): beregner summen av alle elementene i tensoren eller langs en spesifikk akse;
  • tf.reduce_mean(): kalkulerer gjennomsnittet av elementene i tensoren;
  • tf.reduce_max(): finner maksimumsverdien i tensoren;
  • tf.reduce_min(): finner minimumsverdien 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
Merk

Metoden .numpy() ble brukt for å konvertere tensorene til NumPy-arrays, noe som gir en tydeligere visuell fremstilling av tallene når de vises.

Operasjoner langs spesifikke akser

Tensores kan ha flere dimensjoner, og noen ganger ønsker vi å utføre reduksjoner langs en spesifikk akse. Parameteren axis lar oss spesifisere hvilken akse eller hvilke akser vi ønsker å redusere.

  • axis=0: utfører operasjonen langs radene (resulterer i en kolonnevektor);
  • axis=1: utfører operasjonen langs kolonnene (resulterer i en radvektor);
  • Det er mulig å redusere langs flere akser samtidig ved å gi en liste til parameteren axis;
  • Når tensorens rang reduseres, kan du bruke keepdims=True for å beholde den reduserte dimensjonen som 1.

For en 2D-tensor (matrise):

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
Merk

Når du utfører en reduksjonsoperasjon langs en spesifikk akse, eliminerer du i praksis denne aksen fra tensoren, og aggregerer alle tensorene innenfor denne aksen elementvis. Den samme effekten gjelder uansett antall dimensjoner.

Slik ser det ut 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
Merk

Mange andre reduksjonsoperasjoner finnes i TensorFlow, men de fungerer etter de samme prinsippene.

Oppgave

Swipe to start coding

Bakgrunn

Du er en dataforsker ved et værforskningsbyrå. Du har fått et tensor som inneholder værmålinger fra ulike byer over flere dager. Tensoren har følgende struktur:

  • Dimensjon 1: representerer forskjellige byer;
  • Dimensjon 2: representerer forskjellige dager.
  • Hver oppføring i tensoren er et tuppel av (temperature, humidity).

Mål

  1. Beregn gjennomsnittstemperaturen for hver by over alle dager.
  2. Beregn maksimal luftfuktighet på tvers av alle byer for hver dag.

Merk

I denne tensoren representerer det første tallet i hvert tuppel temperaturen (i Celsius), og det andre tallet representerer luftfuktigheten (i prosent) for den aktuelle dagen og byen.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 12
single

single

some-alt