Transformationen
Tensor-Transformationen
Diese Lektion behandelt die fortgeschrittenen Operationen der Transformation von Tensors.
Tensor-Transformationen sind unerlässlich bei der Datenverarbeitung. Mit zunehmender Vertiefung in Deep Learning und Data-Science-Aufgaben wird deutlich, dass die vorliegenden Daten nicht immer im gewünschten Format vorliegen. Diese Lektion stellt Methoden in TensorFlow vor, die die Anpassung der Struktur und des Inhalts von Tensors ermöglichen, um spezifische Anforderungen zu erfüllen.
Umformen von Tensors
Beim Arbeiten mit Tensors gibt es Situationen, in denen die Form geändert werden muss, ohne die zugrunde liegenden Daten zu verändern. tf.reshape()
ist in solchen Fällen hilfreich.
Funktionsweise:
- Das Umformen ändert die Struktur des Tensors, aber nicht dessen Daten. Die Gesamtanzahl der Elemente muss vor und nach dem Umformen gleich bleiben;
- Die neue Form wird zeilenweise (von links nach rechts, von oben nach unten) "gefüllt".
1234567891011121314import 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)
Beim Festlegen der neuen Form kann eine Dimension den Wert -1
haben. TensorFlow berechnet dann die Größe dieser Dimension so, dass die Gesamtgröße konstant bleibt.
Dies ist besonders nützlich, wenn Tensoren in ein neuronales Netzwerk eingespeist werden sollen, die Dimensionen jedoch nicht mit der Eingabeform des Netzwerks übereinstimmen.
Slicing
Slicing ermöglicht das Abrufen eines Teils eines Tensors. Es ist vergleichbar mit dem Listenslicing in Python, aber auf mehrdimensionale Tensoren erweitert.
Funktionsweise:
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, werden alle Elemente in dieser Dimension ausgewählt.
12345678910111213import 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)
Immer an das nullbasierte Indexieren von TensorFlow denken, das dem nativen Indexieren von Python entspricht. Nützlich zum Extrahieren bestimmter Merkmale oder Datenpunkte aus einem größeren Datensatz.
Daten modifizieren
Es gibt eine weitere Möglichkeit des Slicings, die auch das Modifizieren der Originaldaten erlaubt, ähnlich wie das Slicen von Arrays in NumPy.
Funktionsweise:
- Mit
[]
können Tensoren einfach gesliced und indexiert werden, vergleichbar mit NumPy-Slicing. Diese Methode ermöglicht die Auswahl bestimmter Zeilen, Spalten oder Elemente eines Tensors; - Mit
tf.Variable()
wird der Tensor veränderbar, sodass direkte Modifikationen mittels Slicing möglich sind; - Um die Werte des ausgewählten Subtensors zu ändern, die Methode
.assign()
mit einem Tensor oder einer Liste verwenden, die die gleiche Form hat.
12345678910111213import 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)
- Die Slicing-Syntax in TensorFlow ist größtenteils von NumPy inspiriert. Wenn Sie mit NumPy vertraut sind, ist der Übergang zum Slicing-Mechanismus von TensorFlow unkompliziert;
- Verwenden Sie immer
tf.Variable()
für alle Operationen, die eine Veränderbarkeit des Tensors erfordern.
Konkatenation
Konkatenation ermöglicht das Zusammenfügen mehrerer Tensoren entlang einer angegebenen Achse.
Funktionsweise:
tf.concat()
verbindet Tensoren. Die Methode erfordert eine Liste von Tensoren, die zusammengefügt werden sollen, sowie die Achse, entlang der die Operation ausgeführt wird;- Die Achse ist nullbasiert. Eine Achse von
0
bezieht sich auf Zeilen (vertikal) und eine Achse von1
auf Spalten (horizontal).
123456789101112131415161718import 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)
- Sicherstellen, dass die Tensoren, die zusammengefügt werden, übereinstimmende Dimensionen auf den nicht-konkatenierten Achsen aufweisen;
- Diese Operation ähnelt
numpy.concatenate()
, ist jedoch speziell für TensorFlow-Tensoren ausgelegt.
Swipe to start coding
Hintergrund
Sie arbeiten mit einem Datensatz, der Messwerte von verschiedenen Sensoren an unterschiedlichen geografischen Standorten enthält. Diese Sensoren erfassen wetterbezogene Daten wie Temperatur, Luftdruck und normalisierte geografische Koordinaten.
Beim Zusammenstellen der Messwerte haben Sie jedoch festgestellt, dass einige Daten falsch aufgezeichnet wurden.
Außerdem haben Sie neue Messwerte von anderen Sensoren erhalten, die Sie einbeziehen müssen.
Datensatzinformationen
-
main_dataset
: Ein Tensor der Form(6, 4)
, der 6 Messwerte repräsentiert. Jede Zeile ist eine Stichprobe, und die Spalten stehen für folgende Merkmale:- Temperatur (in Celsius);
- Luftdruck (in hPa);
- Normalisierte Breitengradkoordinate;
- Normalisierte Längengradkoordinate.
-
error_correction_data
: Ein Tensor der Form(2, 4)
, der 2 korrigierte Messwerte für fehlerhafte Daten im Hauptdatensatz enthält. -
additional_data
: Ein Tensor der Form(3, 4)
, der 3 neue Messwerte enthält.
Zielsetzung
Erstellen Sie einen korrigierten und vollständigen Datensatz für die Wettervorhersage:
-
Datenkorrektur:
- Es wurde festgestellt, dass die Messwerte in der 2. und 5. Zeile des
main_dataset
ungenau waren. Ersetzen Sie diese Zeilen immain_dataset
durch die Zeilen auserror_correction_data
.
- Es wurde festgestellt, dass die Messwerte in der 2. und 5. Zeile des
-
Einbindung zusätzlicher Daten:
- Fügen Sie das
main_dataset
mitadditional_data
zusammen, um die neuen Messwerte einzubeziehen.
- Fügen Sie das
-
Batch-Umformung:
- Für das Batch-Training soll der Datensatz in Batches mit je 3 Messwerten unterteilt werden. Formen Sie
complete_dataset
so um, dass die erste Dimension die Batchgröße und die zweite Dimension die Anzahl der Messwerte pro Batch darstellt.
- Für das Batch-Training soll der Datensatz in Batches mit je 3 Messwerten unterteilt werden. Formen Sie
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
Awesome!
Completion rate improved to 5.56
Transformationen
Swipe um das Menü anzuzeigen
Tensor-Transformationen
Diese Lektion behandelt die fortgeschrittenen Operationen der Transformation von Tensors.
Tensor-Transformationen sind unerlässlich bei der Datenverarbeitung. Mit zunehmender Vertiefung in Deep Learning und Data-Science-Aufgaben wird deutlich, dass die vorliegenden Daten nicht immer im gewünschten Format vorliegen. Diese Lektion stellt Methoden in TensorFlow vor, die die Anpassung der Struktur und des Inhalts von Tensors ermöglichen, um spezifische Anforderungen zu erfüllen.
Umformen von Tensors
Beim Arbeiten mit Tensors gibt es Situationen, in denen die Form geändert werden muss, ohne die zugrunde liegenden Daten zu verändern. tf.reshape()
ist in solchen Fällen hilfreich.
Funktionsweise:
- Das Umformen ändert die Struktur des Tensors, aber nicht dessen Daten. Die Gesamtanzahl der Elemente muss vor und nach dem Umformen gleich bleiben;
- Die neue Form wird zeilenweise (von links nach rechts, von oben nach unten) "gefüllt".
1234567891011121314import 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)
Beim Festlegen der neuen Form kann eine Dimension den Wert -1
haben. TensorFlow berechnet dann die Größe dieser Dimension so, dass die Gesamtgröße konstant bleibt.
Dies ist besonders nützlich, wenn Tensoren in ein neuronales Netzwerk eingespeist werden sollen, die Dimensionen jedoch nicht mit der Eingabeform des Netzwerks übereinstimmen.
Slicing
Slicing ermöglicht das Abrufen eines Teils eines Tensors. Es ist vergleichbar mit dem Listenslicing in Python, aber auf mehrdimensionale Tensoren erweitert.
Funktionsweise:
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, werden alle Elemente in dieser Dimension ausgewählt.
12345678910111213import 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)
Immer an das nullbasierte Indexieren von TensorFlow denken, das dem nativen Indexieren von Python entspricht. Nützlich zum Extrahieren bestimmter Merkmale oder Datenpunkte aus einem größeren Datensatz.
Daten modifizieren
Es gibt eine weitere Möglichkeit des Slicings, die auch das Modifizieren der Originaldaten erlaubt, ähnlich wie das Slicen von Arrays in NumPy.
Funktionsweise:
- Mit
[]
können Tensoren einfach gesliced und indexiert werden, vergleichbar mit NumPy-Slicing. Diese Methode ermöglicht die Auswahl bestimmter Zeilen, Spalten oder Elemente eines Tensors; - Mit
tf.Variable()
wird der Tensor veränderbar, sodass direkte Modifikationen mittels Slicing möglich sind; - Um die Werte des ausgewählten Subtensors zu ändern, die Methode
.assign()
mit einem Tensor oder einer Liste verwenden, die die gleiche Form hat.
12345678910111213import 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)
- Die Slicing-Syntax in TensorFlow ist größtenteils von NumPy inspiriert. Wenn Sie mit NumPy vertraut sind, ist der Übergang zum Slicing-Mechanismus von TensorFlow unkompliziert;
- Verwenden Sie immer
tf.Variable()
für alle Operationen, die eine Veränderbarkeit des Tensors erfordern.
Konkatenation
Konkatenation ermöglicht das Zusammenfügen mehrerer Tensoren entlang einer angegebenen Achse.
Funktionsweise:
tf.concat()
verbindet Tensoren. Die Methode erfordert eine Liste von Tensoren, die zusammengefügt werden sollen, sowie die Achse, entlang der die Operation ausgeführt wird;- Die Achse ist nullbasiert. Eine Achse von
0
bezieht sich auf Zeilen (vertikal) und eine Achse von1
auf Spalten (horizontal).
123456789101112131415161718import 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)
- Sicherstellen, dass die Tensoren, die zusammengefügt werden, übereinstimmende Dimensionen auf den nicht-konkatenierten Achsen aufweisen;
- Diese Operation ähnelt
numpy.concatenate()
, ist jedoch speziell für TensorFlow-Tensoren ausgelegt.
Swipe to start coding
Hintergrund
Sie arbeiten mit einem Datensatz, der Messwerte von verschiedenen Sensoren an unterschiedlichen geografischen Standorten enthält. Diese Sensoren erfassen wetterbezogene Daten wie Temperatur, Luftdruck und normalisierte geografische Koordinaten.
Beim Zusammenstellen der Messwerte haben Sie jedoch festgestellt, dass einige Daten falsch aufgezeichnet wurden.
Außerdem haben Sie neue Messwerte von anderen Sensoren erhalten, die Sie einbeziehen müssen.
Datensatzinformationen
-
main_dataset
: Ein Tensor der Form(6, 4)
, der 6 Messwerte repräsentiert. Jede Zeile ist eine Stichprobe, und die Spalten stehen für folgende Merkmale:- Temperatur (in Celsius);
- Luftdruck (in hPa);
- Normalisierte Breitengradkoordinate;
- Normalisierte Längengradkoordinate.
-
error_correction_data
: Ein Tensor der Form(2, 4)
, der 2 korrigierte Messwerte für fehlerhafte Daten im Hauptdatensatz enthält. -
additional_data
: Ein Tensor der Form(3, 4)
, der 3 neue Messwerte enthält.
Zielsetzung
Erstellen Sie einen korrigierten und vollständigen Datensatz für die Wettervorhersage:
-
Datenkorrektur:
- Es wurde festgestellt, dass die Messwerte in der 2. und 5. Zeile des
main_dataset
ungenau waren. Ersetzen Sie diese Zeilen immain_dataset
durch die Zeilen auserror_correction_data
.
- Es wurde festgestellt, dass die Messwerte in der 2. und 5. Zeile des
-
Einbindung zusätzlicher Daten:
- Fügen Sie das
main_dataset
mitadditional_data
zusammen, um die neuen Messwerte einzubeziehen.
- Fügen Sie das
-
Batch-Umformung:
- Für das Batch-Training soll der Datensatz in Batches mit je 3 Messwerten unterteilt werden. Formen Sie
complete_dataset
so um, dass die erste Dimension die Batchgröße und die zweite Dimension die Anzahl der Messwerte pro Batch darstellt.
- Für das Batch-Training soll der Datensatz in Batches mit je 3 Messwerten unterteilt werden. Formen Sie
Lösung
Danke für Ihr Feedback!
single