Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Arbeiten mit Datasets | Fortgeschrittenere Konzepte
Pytorch Grundlagen
course content

Kursinhalt

Pytorch Grundlagen

Pytorch Grundlagen

1. Einführung in PyTorch
2. Fortgeschrittenere Konzepte
3. Neuronale Netzwerke in PyTorch

book
Arbeiten mit Datasets

Um die Datenvorbereitung für maschinelle Lernmodelle zu vereinfachen und eine effiziente Batch-Verarbeitung, Durchmischung und Datenhandhabung zu ermöglichen, bietet PyTorch die TensorDataset- und DataLoader-Utilities.

Laden und Inspizieren des Datensatzes

Wir verwenden einen Datensatz (wine.csv), der Daten über verschiedene Weinsorten enthält, einschließlich ihrer Merkmale und entsprechenden Klassenlabels.

Zuerst laden wir den Datensatz und inspizieren seine Struktur, um die Merkmale und die Zielvariable zu verstehen:

123
import pandas as pd wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv') print(wine_df.head())
copy

Erstellen eines TensorDataset

Der nächste Schritt besteht darin, die Merkmale und das Ziel zu trennen, sie in PyTorch-Tensoren umzuwandeln und diese Tensoren direkt zu verwenden, um ein TensorDataset zu erstellen. Wir stellen sicher, dass die Merkmale vom Typ float32 sind (zur Verarbeitung von Gleitkommazahlen) und das Ziel vom Typ long ist (ein 64-Bit-Ganzzahltyp, der für Labels geeignet ist).

Verwendung von DataLoader für Batch-Verarbeitung

Um Batch-Verarbeitung, Durchmischung und effizientes Laden von Daten während des Trainings zu erleichtern, wickeln wir das TensorDataset in einen DataLoader. Dieser Schritt ist entscheidend für die Verwaltung des Datenflusses zum Modell während des Trainings, insbesondere beim Arbeiten mit größeren Datensätzen. Der DataLoader ermöglicht uns:

  1. Batch-Verarbeitung: Aufteilen der Daten in kleinere, handhabbare Stücke (Batches) für das Training, was die Speichernutzung optimiert und Gradientenaktualisierungen nach jedem Batch ermöglicht;
  2. Durchmischung: Zufällige Anordnung der Datenreihenfolge, was hilft, jede inhärente Ordnung in den Daten zu durchbrechen und das Modell daran hindert, falsche Muster zu lernen;
  3. Effizientes Laden: Automatische Handhabung des Datenabrufs und der Vorverarbeitung für jeden Batch während des Trainings, wodurch der Overhead reduziert wird.
123456789101112131415161718
import pandas as pd import torch from torch.utils.data import TensorDataset, DataLoader wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv') # Separate features and target features = wine_df.drop(columns='quality').values target = wine_df['quality'].values # Create TensorDataset wine_dataset = TensorDataset( torch.tensor(features, dtype=torch.float32), # Features tensor torch.tensor(target, dtype=torch.long) # Target tensor ) # Wrap the dataset in a DataLoader wine_loader = DataLoader( wine_dataset, # TensorDataset batch_size=32, # Number of samples per batch shuffle=True # Randomize the order of the data )
copy

Mit dieser Einrichtung stellt der DataLoader sicher, dass das Modell Daten in Batches effizient und in zufälliger Reihenfolge erhält. Dies ist besonders wichtig für das Training von neuronalen Netzwerken, da es dem Modell hilft, besser auf ungesehene Daten zu verallgemeinern.

Iteration über den DataLoader

Wir können nun über den DataLoader iterieren, um auf Datenbatches zuzugreifen. Jeder Batch enthält ein Tupel (batch_features, batch_targets):

123456789101112131415161718192021222324
import pandas as pd import torch from torch.utils.data import TensorDataset, DataLoader wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv') # Separate features and target features = wine_df.drop(columns='quality').values target = wine_df['quality'].values # Create TensorDataset wine_dataset = TensorDataset( torch.tensor(features, dtype=torch.float32), # Features tensor torch.tensor(target, dtype=torch.long) # Target tensor ) # Wrap the dataset in a DataLoader wine_loader = DataLoader( wine_dataset, # TensorDataset batch_size=32, # Number of samples per batch shuffle=True # Randomize the order of the data ) # Iterate through batches for batch_idx, (batch_features, batch_targets) in enumerate(wine_loader): print(f"Batch {batch_idx+1}") print(f"Features: {batch_features}") print(f"Targets: {batch_targets}") print("-" * 30)
copy

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5
We're sorry to hear that something went wrong. What happened?
some-alt