Einführung
In diesem Projekt lernst du, wie du eine Funktion implementierst, um einen Datensatz in Mini-Batches aufzuteilen, was eine übliche Technik bei der Deep-Learning-Trainings ist.
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du die Funktion
data_pipelineimplementierst, um einen Datensatz in Mini-Batches aufzuteilen - Wie du die Funktion
data_pipelinetestest, um sicherzustellen, dass sie wie erwartet funktioniert
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Einen Datensatz in Mini-Batches mit der Funktion
data_pipelineaufzuteilen - Die Funktionalität der Funktion
data_pipelinedurch Tests zu verifizieren
Mini-Batches implementieren
In diesem Schritt lernst du, wie du die Funktion data_pipeline implementierst, um einen Datensatz in Mini-Batches aufzuteilen.
Öffne die Datei data_pipeline.py in deinem Texteditor.
Implementiere die Funktion data_pipeline gemäß den Anforderungen:
- Die Funktion sollte zwei Parameter akzeptieren:
data(eine Liste von Listen, die ganze Zahlen enthalten) undbatch_size(eine ganze Zahl, die die Größe jedes Mini-Batches darstellt). - Die Funktion sollte einen Generator zurückgeben, der Batches des Eingabedatensatzes liefert, wobei jeder Batch
batch_sizeListen von ganzen Zahlen enthält. - Wenn die verbleibende Menge an Daten kleiner als
batch_sizeist, sollte die Funktion alle verbleibenden Samples ausgeben.
Hier ist die abgeschlossene Funktion data_pipeline:
from typing import Generator, List
def data_pipeline(data: List[List[int]], batch_size: int) -> Generator[List[List[int]], None, None]:
"""
Diese Funktion nimmt eine Liste von Listen, die ganze Zahlen enthalten, und teilt sie in kleinere 'Batches' einer bestimmten Größe auf.
Sie gibt einen Generator zurück, der diese Batches sequentiell liefert.
Parameter:
data (List[List[int]]): Der Eingabedatensatz, eine Liste von Listen, die ganze Zahlen enthalten.
batch_size (int): Die Größe jedes Batches, d.h. die Anzahl der Listen von ganzen Zahlen, die in jedem Batch enthalten sein sollen.
Rückgabe:
Generator[List[List[int]], None, None]: Ein Generator, der Batches des Eingabedatensatzes liefert, wobei jeder Batch 'batch_size' Listen von ganzen Zahlen enthält.
"""
for i in range(0, len(data), batch_size):
batch_data = data[i : i + batch_size]
yield batch_data
Speichere die Datei data_pipeline.py.
Die Mini-Batches testen
In diesem Schritt wirst du die Funktion data_pipeline testen, um sicherzustellen, dass sie wie erwartet funktioniert.
Öffne die Datei data_pipeline.py in deinem Texteditor.
Füge den folgenden Code am Ende der Datei hinzu, um die Funktion data_pipeline zu testen:
if __name__ == "__main__":
data = [[1, 2], [1, 3], [3, 5], [2, 1], [3, 3]]
batch_size = 2
batch_data = data_pipeline(data, batch_size)
for batch in batch_data:
print(f"{batch=}")
Speichere die Datei data_pipeline.py.
Führe die Datei data_pipeline.py in deinem Terminal aus:
python data_pipeline.py
Die Ausgabe sollte wie folgt sein:
batch=[[1, 2], [1, 3]]
batch=[[3, 5], [2, 1]]
batch=[[3, 3]]
Diese Ausgabe bestätigt, dass die Funktion data_pipeline wie erwartet funktioniert und den Eingabedatensatz in Mini-Batches der Größe 2 aufteilt.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.



