Reduktionsoperationen
Reduktionsoperationen
Im Bereich der Tensoroperationen gibt es zahlreiche Aufgaben, bei denen die Dimensionen der Daten reduziert werden müssen, entweder durch Zusammenfassung über eine oder mehrere Achsen. Wenn beispielsweise ein 2D-Tensor (eine Matrix) vorliegt, kann eine Reduktionsoperation einen Wert für jede Zeile oder jede Spalte berechnen, was zu einem 1D-Tensor (einem Vektor) führt. TensorFlow stellt eine Reihe von Operationen zur Verfügung, um dies zu erreichen. In diesem Kapitel werden die am häufigsten verwendeten Reduktionsoperationen vorgestellt.
Summe, Mittelwert, Maximum und Minimum
TensorFlow bietet die folgenden Methoden für diese Berechnungen an:
tf.reduce_sum()
: berechnet die Summe aller Elemente im Tensor oder entlang einer bestimmten Achse;tf.reduce_mean()
: berechnet den Mittelwert der Tensor-Elemente;tf.reduce_max()
: bestimmt den Maximalwert im Tensor;tf.reduce_min()
: ermittelt den Minimalwert im Tensor.
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())
Die Methode .numpy()
wurde verwendet, um die Tensoren in NumPy-Arrays umzuwandeln, was eine klarere visuelle Darstellung der Zahlen bei der Anzeige ermöglicht.
Operationen entlang bestimmter Achsen
Tensoren können mehrere Dimensionen besitzen, und manchmal möchte man Reduktionen entlang einer bestimmten Achse durchführen. Der Parameter axis
ermöglicht es, anzugeben, welche Achse oder Achsen reduziert werden sollen.
axis=0
: Durchführung der Operation entlang der Zeilen (ergibt einen Spaltenvektor);axis=1
: Durchführung der Operation entlang der Spalten (ergibt einen Zeilenvektor);- Es ist möglich, gleichzeitig entlang mehrerer Achsen zu reduzieren, indem man dem Parameter
axis
eine Liste übergibt; - Wenn der Rang des Tensors reduziert wird, kann mit
keepdims=True
die reduzierte Dimension als 1 beibehalten werden.
Für einen 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())
Wenn eine Reduktionsoperation entlang einer bestimmten Achse ausgeführt wird, wird diese Achse im Tensor eliminiert, wobei alle Tensoren innerhalb dieser Achse elementweise aggregiert werden. Dieser Effekt bleibt unabhängig von der Anzahl der Dimensionen erhalten.
So sieht es bei einem 3D-Tensor aus:
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())
Viele weitere Reduktionsoperationen existieren in TensorFlow, sie basieren jedoch auf denselben Prinzipien.
Swipe to start coding
Hintergrund
Sie sind Datenwissenschaftler bei einer Wetterforschungsagentur. Ihnen wurde ein Tensor mit Wetterdaten aus verschiedenen Städten über mehrere Tage hinweg zur Verfügung gestellt. Der Tensor hat folgende Struktur:
- Dimension 1: repräsentiert verschiedene Städte;
- Dimension 2: repräsentiert verschiedene Tage.
- Jeder Eintrag im Tensor ist ein Tupel aus
(temperature, humidity)
.
Zielsetzung
- Berechnung der durchschnittlichen Temperatur für jede Stadt über alle Tage hinweg.
- Ermittlung des maximalen Feuchtigkeitswerts über alle Städte hinweg für jeden Tag.
Hinweis
In diesem Tensor steht die erste Zahl in jedem Tupel für die Temperatur (in Celsius) und die zweite Zahl für die Luftfeuchtigkeit (in Prozent) für den jeweiligen Tag und die jeweilige Stadt.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Reduktionsoperationen
Swipe um das Menü anzuzeigen
Reduktionsoperationen
Im Bereich der Tensoroperationen gibt es zahlreiche Aufgaben, bei denen die Dimensionen der Daten reduziert werden müssen, entweder durch Zusammenfassung über eine oder mehrere Achsen. Wenn beispielsweise ein 2D-Tensor (eine Matrix) vorliegt, kann eine Reduktionsoperation einen Wert für jede Zeile oder jede Spalte berechnen, was zu einem 1D-Tensor (einem Vektor) führt. TensorFlow stellt eine Reihe von Operationen zur Verfügung, um dies zu erreichen. In diesem Kapitel werden die am häufigsten verwendeten Reduktionsoperationen vorgestellt.
Summe, Mittelwert, Maximum und Minimum
TensorFlow bietet die folgenden Methoden für diese Berechnungen an:
tf.reduce_sum()
: berechnet die Summe aller Elemente im Tensor oder entlang einer bestimmten Achse;tf.reduce_mean()
: berechnet den Mittelwert der Tensor-Elemente;tf.reduce_max()
: bestimmt den Maximalwert im Tensor;tf.reduce_min()
: ermittelt den Minimalwert im Tensor.
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())
Die Methode .numpy()
wurde verwendet, um die Tensoren in NumPy-Arrays umzuwandeln, was eine klarere visuelle Darstellung der Zahlen bei der Anzeige ermöglicht.
Operationen entlang bestimmter Achsen
Tensoren können mehrere Dimensionen besitzen, und manchmal möchte man Reduktionen entlang einer bestimmten Achse durchführen. Der Parameter axis
ermöglicht es, anzugeben, welche Achse oder Achsen reduziert werden sollen.
axis=0
: Durchführung der Operation entlang der Zeilen (ergibt einen Spaltenvektor);axis=1
: Durchführung der Operation entlang der Spalten (ergibt einen Zeilenvektor);- Es ist möglich, gleichzeitig entlang mehrerer Achsen zu reduzieren, indem man dem Parameter
axis
eine Liste übergibt; - Wenn der Rang des Tensors reduziert wird, kann mit
keepdims=True
die reduzierte Dimension als 1 beibehalten werden.
Für einen 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())
Wenn eine Reduktionsoperation entlang einer bestimmten Achse ausgeführt wird, wird diese Achse im Tensor eliminiert, wobei alle Tensoren innerhalb dieser Achse elementweise aggregiert werden. Dieser Effekt bleibt unabhängig von der Anzahl der Dimensionen erhalten.
So sieht es bei einem 3D-Tensor aus:
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())
Viele weitere Reduktionsoperationen existieren in TensorFlow, sie basieren jedoch auf denselben Prinzipien.
Swipe to start coding
Hintergrund
Sie sind Datenwissenschaftler bei einer Wetterforschungsagentur. Ihnen wurde ein Tensor mit Wetterdaten aus verschiedenen Städten über mehrere Tage hinweg zur Verfügung gestellt. Der Tensor hat folgende Struktur:
- Dimension 1: repräsentiert verschiedene Städte;
- Dimension 2: repräsentiert verschiedene Tage.
- Jeder Eintrag im Tensor ist ein Tupel aus
(temperature, humidity)
.
Zielsetzung
- Berechnung der durchschnittlichen Temperatur für jede Stadt über alle Tage hinweg.
- Ermittlung des maximalen Feuchtigkeitswerts über alle Städte hinweg für jeden Tag.
Hinweis
In diesem Tensor steht die erste Zahl in jedem Tupel für die Temperatur (in Celsius) und die zweite Zahl für die Luftfeuchtigkeit (in Prozent) für den jeweiligen Tag und die jeweilige Stadt.
Lösung
Danke für Ihr Feedback!
single