Datensatz in Mini-Batches aufteilen

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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_pipeline implementierst, um einen Datensatz in Mini-Batches aufzuteilen
  • Wie du die Funktion data_pipeline testest, 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_pipeline aufzuteilen
  • Die Funktionalität der Funktion data_pipeline durch Tests zu verifizieren

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/AdvancedTopicsGroup -.-> python/generators("Generators") subgraph Lab Skills python/for_loops -.-> lab-300212{{"Datensatz in Mini-Batches aufteilen"}} python/lists -.-> lab-300212{{"Datensatz in Mini-Batches aufteilen"}} python/function_definition -.-> lab-300212{{"Datensatz in Mini-Batches aufteilen"}} python/file_operations -.-> lab-300212{{"Datensatz in Mini-Batches aufteilen"}} python/generators -.-> lab-300212{{"Datensatz in Mini-Batches aufteilen"}} end

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) und batch_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_size Listen von ganzen Zahlen enthält.
  • Wenn die verbleibende Menge an Daten kleiner als batch_size ist, 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.

✨ Lösung prüfen und üben

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.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.