Reduktionsoperationer
Reduktionsoperationer
Inden for tensoroperationer er der mange opgaver, hvor det er nødvendigt at reducere dimensionerne af dataene, enten ved at opsummere dem over é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 hver 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 den største værdi i tensoren;tf.reduce_min()
: finder den mindste værdi i tensoren.
12345678910111213141516171819import 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())
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 langs.
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):
1234567891011121314151617181920import 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())
Når du udfører en reduktionsoperation langs en bestemt akse, eliminerer du i det væsentlige denne akse fra tensoren og samler 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:
12345678910111213141516171819import 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())
Mange andre reduktionsoperationer findes i TensorFlow, men de fungerer efter de samme principper.
Swipe to start coding
Baggrund
Du er dataforsker hos et vejrundersøgelsesbureau. 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
- Beregn gennemsnitstemperaturen for hver by over alle dage.
- 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
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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?
Awesome!
Completion rate improved to 5.56
Reduktionsoperationer
Stryg for at vise menuen
Reduktionsoperationer
Inden for tensoroperationer er der mange opgaver, hvor det er nødvendigt at reducere dimensionerne af dataene, enten ved at opsummere dem over é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 hver 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 den største værdi i tensoren;tf.reduce_min()
: finder den mindste værdi i tensoren.
12345678910111213141516171819import 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())
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 langs.
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):
1234567891011121314151617181920import 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())
Når du udfører en reduktionsoperation langs en bestemt akse, eliminerer du i det væsentlige denne akse fra tensoren og samler 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:
12345678910111213141516171819import 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())
Mange andre reduktionsoperationer findes i TensorFlow, men de fungerer efter de samme principper.
Swipe to start coding
Baggrund
Du er dataforsker hos et vejrundersøgelsesbureau. 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
- Beregn gennemsnitstemperaturen for hver by over alle dage.
- 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
Tak for dine kommentarer!
single