Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Transformationen | Tensoren
Einführung in TensorFlow
course content

Kursinhalt

Einführung in TensorFlow

Einführung in TensorFlow

1. Tensoren
2. Grundlagen von TensorFlow

book
Transformationen

Tensor-Transformationen

Willkommen zurück! Heute werden wir tiefer in fortgeschrittene Operationen eintauchen: Transformation von Tensors.

Tensor-Transformationen sind entscheidend bei der Arbeit mit Daten. Wenn Sie sich weiter mit Aufgaben des Deep Learning und der Datenwissenschaft beschäftigen, werden Sie feststellen, dass die Daten, mit denen Sie arbeiten, nicht immer im benötigten Format vorliegen. Diese Lektion führt Sie in Methoden in TensorFlow ein, die es Ihnen ermöglichen, die Struktur und den Inhalt von Tensors zu manipulieren, um Ihren Anforderungen gerecht zu werden.

Umformen von Tensors

Bei der Arbeit mit Tensors gibt es Zeiten, in denen Sie die Form ändern müssen, ohne die zugrunde liegenden Daten zu verändern. tf.reshape() ist in solchen Zeiten nützlich.

Wie es funktioniert:

  • Das Umformen ändert die Struktur des Tensors, aber nicht seine Daten. Die Gesamtanzahl der Elemente vor und nach dem Umformen muss gleich bleiben;
  • Es funktioniert, indem die neue Form zeilenweise (von links nach rechts, von oben nach unten) "gefüllt" wird.
1234567891011121314
import tensorflow as tf # Create a tensor with shape (3, 2) tensor = tf.constant([[1, 2], [3, 4], [5, 6]]) # Reshape the tensor to shape (2, 3) reshaped_tensor = tf.reshape(tensor, (2, 3)) print(reshaped_tensor) print('-' * 50) # Reshape the tensor to shape (6, 1); # The size of the first dimention is determined automatically reshaped_tensor = tf.reshape(tensor, (-1, 1)) print(reshaped_tensor)
copy

Hinweis

Wenn Sie die neue Form angeben, kann eine Dimension -1 sein. TensorFlow berechnet die Größe dieser Dimension so, dass die Gesamtgröße konstant bleibt.

Dies ist besonders nützlich, wenn Sie Tensors in ein neuronales Netzwerk einspeisen möchten, aber die Dimensionen nicht mit der Eingabeform des Netzwerks übereinstimmen.

Slicing

Slicing hilft Ihnen, einen Teil eines Tensors abzurufen. Es ist analog zum Listenslicing in Python, aber erweitert auf mehrdimensionale Tensors.

Wie es funktioniert:

  • tf.slice() extrahiert einen Ausschnitt aus einem Tensor. Es erfordert den Startindex für den Ausschnitt und die Größe des Ausschnitts;
  • Wenn die Größe -1 ist, bedeutet dies alle Elemente in dieser Dimension.
12345678910111213
import tensorflow as tf # Create a tensor tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2) sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2)) print(sliced_tensor) print('-' * 50) # Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2) sliced_tensor = tf.slice(tensor, (1, 0), (2, 2)) print(sliced_tensor)
copy

Hinweis

Denken Sie immer an das nullbasierte Indexieren von TensorFlow, das dem nativen Indexieren von Python ähnelt.

Daten modifizieren

Es gibt eine andere Möglichkeit des Slicings, die es Ihnen auch ermöglicht, die ursprünglichen Daten zu ändern, ähnlich wie beim Slicing von Arrays in NumPy.

Wie es funktioniert:

  • Mit [] können Sie Tensoren einfach slicen und indizieren, ähnlich wie beim NumPy-Slicing. Dieser Ansatz ermöglicht es Ihnen, bestimmte Zeilen, Spalten oder Elemente eines Tensors auszuwählen;
  • Mit tf.Variable() wird der Tensor veränderbar, sodass direkte Änderungen durch Slicing möglich sind;
  • Um die Werte des ausgewählten Subtensors zu ändern, verwenden Sie die .assign()-Methode mit einem Tensor oder einer Liste, die seiner Form entspricht.
12345678910111213
import tensorflow as tf # Create a mutable tensor tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Change the entire first row tensor[0, :].assign([0, 0, 0]) print(tensor) print('-' * 80) # Modify the second and the third columns tensor[:, 1:3].assign(tf.fill((3,2), 1)) print(tensor)
copy

Hinweis

  • Die Slicing-Syntax in TensorFlow ist stark von NumPy inspiriert. Wenn Sie mit NumPy vertraut sind, ist der Übergang zum Slicing-Mechanismus von TensorFlow einfach;
  • Stellen Sie immer sicher, dass Sie tf.Variable() für alle Operationen verwenden, die Tensor-Mutabilität erfordern.

Verkettung

Die Verkettung ermöglicht es Ihnen, mehrere Tensoren entlang einer angegebenen Achse zu verbinden.

Wie es funktioniert:

  • tf.concat() kombiniert Tensoren. Die Methode erfordert eine Liste von Tensoren, die Sie verketten möchten, und die Achse, entlang der die Operation ausgeführt werden soll;
  • Die Achse ist nullbasiert. Eine Achse von 0 bezieht sich auf Zeilen (vertikal) und eine Achse von 1 bezieht sich auf Spalten (horizontal).
123456789101112131415161718
import tensorflow as tf # Create two tensors tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]]) tensor2 = tf.constant([[7, 8, 9]]) # Concatenate tensors vertically (along rows) concatenated_tensor = tf.concat([tensor1, tensor2], axis=0) print(concatenated_tensor) print('-' * 50) # Create another set of tensors tensor3 = tf.constant([[1, 2], [4, 5]]) tensor4 = tf.constant([[3], [6]]) # Concatenate tensors horizontally (along columns) concatenated_tensor = tf.concat([tensor3, tensor4], axis=1) print(concatenated_tensor)
copy

Hinweis

  • Stellen Sie sicher, dass die Tensoren, die Sie verbinden, übereinstimmende Dimensionen auf den nicht zusammengefügten Achsen haben;
  • Diese Operation ähnelt numpy.concatenate(), ist jedoch für TensorFlow-Tensoren angepasst.
Aufgabe

Swipe to start coding

Hintergrund

Sie arbeiten an einem Datensatz, der aus Messwerten von verschiedenen Sensoren besteht, die an unterschiedlichen geografischen Standorten platziert sind. Diese Sensoren erfassen wetterbezogene Daten wie Temperatur, Druck und normalisierte geografische Koordinaten.

Beim Zusammenstellen der Messwerte haben Sie jedoch festgestellt, dass einige der Daten falsch aufgezeichnet wurden.

Sie haben auch neue Messwerte von anderen Sensoren erhalten, die Sie einbeziehen müssen.

Datensatzinformationen

  1. main_dataset: Ein Tensor der Form (6, 4), der 6 Messwerte darstellt. Jede Zeile ist eine Probe, und die Spalten repräsentieren die folgenden Merkmale:

    • Temperatur (in Celsius).
    • Druck (in hPa).
    • Normalisierte Breitengradkoordinate.
    • Normalisierte Längengradkoordinate.
  2. error_correction_data: Ein Tensor der Form (2, 4), der 2 korrigierte Messwerte für fehlerhafte Daten im Hauptdatensatz darstellt.

  3. additional_data: Ein Tensor der Form (3, 4), der 3 neue Messwerte darstellt.

Ziel

Bereiten Sie einen korrigierten und vollständigen Datensatz für die Wettervorhersage vor:

  1. Datenkorrektur:

    • Sie haben festgestellt, dass die Messwerte in der 2. und 5. Zeile des main_dataset ungenau waren. Ersetzen Sie diese Zeilen im main_dataset durch die Zeilen aus error_correction_data.
  2. Zusätzliche Daten einbeziehen:

    • Fügen Sie das main_dataset mit additional_data zusammen, um die neuen Messwerte einzubeziehen.
  3. Batch-Umformung:

    • Für das Batch-Training möchten Sie den Datensatz in Batches mit 3 Messwerten pro Batch aufteilen. Formen Sie complete_dataset um, wobei die erste Dimension die Batch-Größe darstellt und die zweite Dimension die Anzahl der Messwerte pro Batch.

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
toggle bottom row

book
Transformationen

Tensor-Transformationen

Willkommen zurück! Heute werden wir tiefer in fortgeschrittene Operationen eintauchen: Transformation von Tensors.

Tensor-Transformationen sind entscheidend bei der Arbeit mit Daten. Wenn Sie sich weiter mit Aufgaben des Deep Learning und der Datenwissenschaft beschäftigen, werden Sie feststellen, dass die Daten, mit denen Sie arbeiten, nicht immer im benötigten Format vorliegen. Diese Lektion führt Sie in Methoden in TensorFlow ein, die es Ihnen ermöglichen, die Struktur und den Inhalt von Tensors zu manipulieren, um Ihren Anforderungen gerecht zu werden.

Umformen von Tensors

Bei der Arbeit mit Tensors gibt es Zeiten, in denen Sie die Form ändern müssen, ohne die zugrunde liegenden Daten zu verändern. tf.reshape() ist in solchen Zeiten nützlich.

Wie es funktioniert:

  • Das Umformen ändert die Struktur des Tensors, aber nicht seine Daten. Die Gesamtanzahl der Elemente vor und nach dem Umformen muss gleich bleiben;
  • Es funktioniert, indem die neue Form zeilenweise (von links nach rechts, von oben nach unten) "gefüllt" wird.
1234567891011121314
import tensorflow as tf # Create a tensor with shape (3, 2) tensor = tf.constant([[1, 2], [3, 4], [5, 6]]) # Reshape the tensor to shape (2, 3) reshaped_tensor = tf.reshape(tensor, (2, 3)) print(reshaped_tensor) print('-' * 50) # Reshape the tensor to shape (6, 1); # The size of the first dimention is determined automatically reshaped_tensor = tf.reshape(tensor, (-1, 1)) print(reshaped_tensor)
copy

Hinweis

Wenn Sie die neue Form angeben, kann eine Dimension -1 sein. TensorFlow berechnet die Größe dieser Dimension so, dass die Gesamtgröße konstant bleibt.

Dies ist besonders nützlich, wenn Sie Tensors in ein neuronales Netzwerk einspeisen möchten, aber die Dimensionen nicht mit der Eingabeform des Netzwerks übereinstimmen.

Slicing

Slicing hilft Ihnen, einen Teil eines Tensors abzurufen. Es ist analog zum Listenslicing in Python, aber erweitert auf mehrdimensionale Tensors.

Wie es funktioniert:

  • tf.slice() extrahiert einen Ausschnitt aus einem Tensor. Es erfordert den Startindex für den Ausschnitt und die Größe des Ausschnitts;
  • Wenn die Größe -1 ist, bedeutet dies alle Elemente in dieser Dimension.
12345678910111213
import tensorflow as tf # Create a tensor tensor = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Slice tensor to extract sub-tensor from index (0, 1) of size (1, 2) sliced_tensor = tf.slice(tensor, begin=(0, 1), size=(1, 2)) print(sliced_tensor) print('-' * 50) # Slice tensor to extract sub-tensor from index (1, 0) of size (2, 2) sliced_tensor = tf.slice(tensor, (1, 0), (2, 2)) print(sliced_tensor)
copy

Hinweis

Denken Sie immer an das nullbasierte Indexieren von TensorFlow, das dem nativen Indexieren von Python ähnelt.

Daten modifizieren

Es gibt eine andere Möglichkeit des Slicings, die es Ihnen auch ermöglicht, die ursprünglichen Daten zu ändern, ähnlich wie beim Slicing von Arrays in NumPy.

Wie es funktioniert:

  • Mit [] können Sie Tensoren einfach slicen und indizieren, ähnlich wie beim NumPy-Slicing. Dieser Ansatz ermöglicht es Ihnen, bestimmte Zeilen, Spalten oder Elemente eines Tensors auszuwählen;
  • Mit tf.Variable() wird der Tensor veränderbar, sodass direkte Änderungen durch Slicing möglich sind;
  • Um die Werte des ausgewählten Subtensors zu ändern, verwenden Sie die .assign()-Methode mit einem Tensor oder einer Liste, die seiner Form entspricht.
12345678910111213
import tensorflow as tf # Create a mutable tensor tensor = tf.Variable([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Change the entire first row tensor[0, :].assign([0, 0, 0]) print(tensor) print('-' * 80) # Modify the second and the third columns tensor[:, 1:3].assign(tf.fill((3,2), 1)) print(tensor)
copy

Hinweis

  • Die Slicing-Syntax in TensorFlow ist stark von NumPy inspiriert. Wenn Sie mit NumPy vertraut sind, ist der Übergang zum Slicing-Mechanismus von TensorFlow einfach;
  • Stellen Sie immer sicher, dass Sie tf.Variable() für alle Operationen verwenden, die Tensor-Mutabilität erfordern.

Verkettung

Die Verkettung ermöglicht es Ihnen, mehrere Tensoren entlang einer angegebenen Achse zu verbinden.

Wie es funktioniert:

  • tf.concat() kombiniert Tensoren. Die Methode erfordert eine Liste von Tensoren, die Sie verketten möchten, und die Achse, entlang der die Operation ausgeführt werden soll;
  • Die Achse ist nullbasiert. Eine Achse von 0 bezieht sich auf Zeilen (vertikal) und eine Achse von 1 bezieht sich auf Spalten (horizontal).
123456789101112131415161718
import tensorflow as tf # Create two tensors tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]]) tensor2 = tf.constant([[7, 8, 9]]) # Concatenate tensors vertically (along rows) concatenated_tensor = tf.concat([tensor1, tensor2], axis=0) print(concatenated_tensor) print('-' * 50) # Create another set of tensors tensor3 = tf.constant([[1, 2], [4, 5]]) tensor4 = tf.constant([[3], [6]]) # Concatenate tensors horizontally (along columns) concatenated_tensor = tf.concat([tensor3, tensor4], axis=1) print(concatenated_tensor)
copy

Hinweis

  • Stellen Sie sicher, dass die Tensoren, die Sie verbinden, übereinstimmende Dimensionen auf den nicht zusammengefügten Achsen haben;
  • Diese Operation ähnelt numpy.concatenate(), ist jedoch für TensorFlow-Tensoren angepasst.
Aufgabe

Swipe to start coding

Hintergrund

Sie arbeiten an einem Datensatz, der aus Messwerten von verschiedenen Sensoren besteht, die an unterschiedlichen geografischen Standorten platziert sind. Diese Sensoren erfassen wetterbezogene Daten wie Temperatur, Druck und normalisierte geografische Koordinaten.

Beim Zusammenstellen der Messwerte haben Sie jedoch festgestellt, dass einige der Daten falsch aufgezeichnet wurden.

Sie haben auch neue Messwerte von anderen Sensoren erhalten, die Sie einbeziehen müssen.

Datensatzinformationen

  1. main_dataset: Ein Tensor der Form (6, 4), der 6 Messwerte darstellt. Jede Zeile ist eine Probe, und die Spalten repräsentieren die folgenden Merkmale:

    • Temperatur (in Celsius).
    • Druck (in hPa).
    • Normalisierte Breitengradkoordinate.
    • Normalisierte Längengradkoordinate.
  2. error_correction_data: Ein Tensor der Form (2, 4), der 2 korrigierte Messwerte für fehlerhafte Daten im Hauptdatensatz darstellt.

  3. additional_data: Ein Tensor der Form (3, 4), der 3 neue Messwerte darstellt.

Ziel

Bereiten Sie einen korrigierten und vollständigen Datensatz für die Wettervorhersage vor:

  1. Datenkorrektur:

    • Sie haben festgestellt, dass die Messwerte in der 2. und 5. Zeile des main_dataset ungenau waren. Ersetzen Sie diese Zeilen im main_dataset durch die Zeilen aus error_correction_data.
  2. Zusätzliche Daten einbeziehen:

    • Fügen Sie das main_dataset mit additional_data zusammen, um die neuen Messwerte einzubeziehen.
  3. Batch-Umformung:

    • Für das Batch-Training möchten Sie den Datensatz in Batches mit 3 Messwerten pro Batch aufteilen. Formen Sie complete_dataset um, wobei die erste Dimension die Batch-Größe darstellt und die zweite Dimension die Anzahl der Messwerte pro Batch.

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
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
We're sorry to hear that something went wrong. What happened?
some-alt