Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Reduktionsoperationer | Tensorer
Introduktion till Tensorflow

bookReduktionsoperationer

Reduktionsoperationer

Inom tensoroperationer finns det många uppgifter där vi behöver reducera dimensionerna av våra data, antingen genom att sammanfatta dem över en eller flera axlar. Om vi till exempel har en 2D-tensor (en matris), kan en reduktionsoperation beräkna ett värde för varje rad eller kolumn, vilket resulterar i en 1D-tensor (en vektor). TensorFlow erbjuder ett antal operationer för detta ändamål, och i detta kapitel kommer vi att utforska de mest använda reduktionsoperationerna.

Summa, Medelvärde, Maximum och Minimum

TensorFlow erbjuder följande metoder för dessa beräkningar:

  • tf.reduce_sum(): beräknar summan av alla element i tensorn eller längs en specifik axel;
  • tf.reduce_mean(): beräknar medelvärdet av tensorernas element;
  • tf.reduce_max(): bestämmer det största värdet i tensorn;
  • tf.reduce_min(): hittar det minsta värdet i tensorn.
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
Observera

Metoden .numpy() användes för att konvertera tensorerna till NumPy-arrayer, vilket ger en tydligare visuell presentation av siffrorna vid visning.

Operationer längs specifika axlar

Tensorer kan ha flera dimensioner, och ibland vill vi utföra reduktioner längs en specifik axel. Parametern axis gör det möjligt att ange vilken axel eller vilka axlar vi vill reducera längs.

  • axis=0: utför operationen längs raderna (resulterar i en kolumnvektor);
  • axis=1: utför operationen längs kolumnerna (resulterar i en radvektor);
  • Det är möjligt att reducera längs flera axlar samtidigt genom att ange en lista till parametern axis;
  • När tensorernas rang reduceras kan du använda keepdims=True för att behålla den reducerade dimensionen som 1.

För en 2D-tensor (matris):

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
Observera

När du utför en reduktionsoperation längs en specifik axel eliminerar du i princip den axeln från tensorn, och aggregerar alla tensorer inom den axeln elementvis. Samma effekt gäller för valfritt antal dimensioner.

Så här ser det ut för 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
Observera

Många andra reduktionsoperationer finns i TensorFlow, men de fungerar enligt samma principer.

Uppgift

Swipe to start coding

Bakgrund

Du arbetar som data scientist på en väderforskningsbyrå. Du har fått en tensor som innehåller väderavläsningar från olika städer under flera dagar. Tensors strukturen är följande:

  • Dimension 1: representerar olika städer;
  • Dimension 2: representerar olika dagar.
  • Varje post i tensorn är en tuple av (temperature, humidity).

Mål

  1. Beräkna medeltemperaturen för varje stad över alla dagar.
  2. Beräkna maximal luftfuktighet över alla städer för varje dag.

Observera

I denna tensor representerar det första talet i varje tuple temperaturen (i Celsius) och det andra talet representerar luftfuktigheten (i procent) för den aktuella dagen och staden.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 12
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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

bookReduktionsoperationer

Svep för att visa menyn

Reduktionsoperationer

Inom tensoroperationer finns det många uppgifter där vi behöver reducera dimensionerna av våra data, antingen genom att sammanfatta dem över en eller flera axlar. Om vi till exempel har en 2D-tensor (en matris), kan en reduktionsoperation beräkna ett värde för varje rad eller kolumn, vilket resulterar i en 1D-tensor (en vektor). TensorFlow erbjuder ett antal operationer för detta ändamål, och i detta kapitel kommer vi att utforska de mest använda reduktionsoperationerna.

Summa, Medelvärde, Maximum och Minimum

TensorFlow erbjuder följande metoder för dessa beräkningar:

  • tf.reduce_sum(): beräknar summan av alla element i tensorn eller längs en specifik axel;
  • tf.reduce_mean(): beräknar medelvärdet av tensorernas element;
  • tf.reduce_max(): bestämmer det största värdet i tensorn;
  • tf.reduce_min(): hittar det minsta värdet i tensorn.
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
Observera

Metoden .numpy() användes för att konvertera tensorerna till NumPy-arrayer, vilket ger en tydligare visuell presentation av siffrorna vid visning.

Operationer längs specifika axlar

Tensorer kan ha flera dimensioner, och ibland vill vi utföra reduktioner längs en specifik axel. Parametern axis gör det möjligt att ange vilken axel eller vilka axlar vi vill reducera längs.

  • axis=0: utför operationen längs raderna (resulterar i en kolumnvektor);
  • axis=1: utför operationen längs kolumnerna (resulterar i en radvektor);
  • Det är möjligt att reducera längs flera axlar samtidigt genom att ange en lista till parametern axis;
  • När tensorernas rang reduceras kan du använda keepdims=True för att behålla den reducerade dimensionen som 1.

För en 2D-tensor (matris):

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
Observera

När du utför en reduktionsoperation längs en specifik axel eliminerar du i princip den axeln från tensorn, och aggregerar alla tensorer inom den axeln elementvis. Samma effekt gäller för valfritt antal dimensioner.

Så här ser det ut för 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
Observera

Många andra reduktionsoperationer finns i TensorFlow, men de fungerar enligt samma principer.

Uppgift

Swipe to start coding

Bakgrund

Du arbetar som data scientist på en väderforskningsbyrå. Du har fått en tensor som innehåller väderavläsningar från olika städer under flera dagar. Tensors strukturen är följande:

  • Dimension 1: representerar olika städer;
  • Dimension 2: representerar olika dagar.
  • Varje post i tensorn är en tuple av (temperature, humidity).

Mål

  1. Beräkna medeltemperaturen för varje stad över alla dagar.
  2. Beräkna maximal luftfuktighet över alla städer för varje dag.

Observera

I denna tensor representerar det första talet i varje tuple temperaturen (i Celsius) och det andra talet representerar luftfuktigheten (i procent) för den aktuella dagen och staden.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 12
single

single

some-alt