Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Reduktionsoperationen | Abschnitt
Deep Learning mit TensorFlow
Abschnitt 1. Kapitel 11
single

single

bookReduktionsoperationen

Swipe um das Menü anzuzeigen

Im Bereich der Tensoroperationen gibt es zahlreiche Aufgaben, bei denen wir die Dimensionen unserer Daten reduzieren müssen, entweder indem wir sie über eine oder mehrere Achsen zusammenfassen. Wenn wir beispielsweise einen 2D-Tensor (eine Matrix) haben, kann eine Reduktionsoperation einen Wert für jede Zeile oder jede Spalte berechnen, was zu einem 1D-Tensor (einem Vektor) führt. TensorFlow bietet eine Reihe von Operationen, um dies zu ermöglichen. In diesem Kapitel werden die am häufigsten verwendeten Reduktionsoperationen vorgestellt.

Summe, Mittelwert, Maximum und Minimum

TensorFlow stellt die folgenden Methoden für diese Berechnungen zur Verfügung:

  • 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(): findet den Minimalwert im Tensor.
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
Hinweis

Die Methode .numpy() wurde verwendet, um die Tensoren in NumPy-Arrays umzuwandeln. Dies ermöglicht eine klarere visuelle Darstellung der Zahlen bei der Anzeige.

Operationen entlang spezifischer Achsen

Tensoren können mehrere Dimensionen besitzen, und manchmal ist es erforderlich, Reduktionen entlang einer bestimmten Achse durchzuführen. Der Parameter axis ermöglicht die Angabe, 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 eine Liste an den Parameter axis übergeben wird;
  • Wenn der Rang des Tensors reduziert wird, kann mit keepdims=True die reduzierte Dimension als 1 beibehalten werden.

Für einen 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
Hinweis

Wenn Sie eine Reduktionsoperation entlang einer bestimmten Achse ausführen, entfernen Sie im Wesentlichen diese Achse aus dem Tensor und aggregieren alle Tensoren innerhalb dieser Achse elementweise. Dieser Effekt bleibt für jede Anzahl von Dimensionen erhalten.

So sieht es bei einem 3D-Tensor aus:

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
Hinweis

Viele weitere Reduktionsoperationen existieren in TensorFlow, sie basieren jedoch auf denselben Prinzipien.

Aufgabe

Swipe to start coding

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

  1. Berechnung der durchschnittlichen Temperatur für jede Stadt über alle Tage.
  2. Ermittlung des maximalen Luftfeuchtigkeitswerts über alle Städte 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

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 11
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt