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

bookArbeiten mit Datasets

Um die Datenvorbereitung für Machine-Learning-Modelle zu vereinfachen und eine effiziente Stapelverarbeitung, Durchmischung und Datenverwaltung zu ermöglichen, stellt PyTorch die Hilfsfunktionen TensorDataset und DataLoader bereit.

Laden und Inspizieren des Datensatzes

Wir verwenden einen Datensatz (wine.csv), der Informationen über verschiedene Weinsorten, deren Merkmale und zugehörige Klassenlabels enthält.

Zunächst laden wir den Datensatz und untersuchen dessen 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

Im nächsten Schritt werden die Merkmale und das Ziel getrennt, in PyTorch-Tensoren umgewandelt und diese Tensoren direkt zur Erstellung eines TensorDataset verwendet. Wir stellen sicher, dass die Merkmale vom Typ float32 sind (zur Verarbeitung von Fließkommazahlen) und das Ziel vom Typ long (ein 64-Bit-Ganzzahltyp, der sich für Labels eignet).

import pandas as pd
import torch
from torch.utils.data import TensorDataset
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
)

Verwendung von DataLoader für Batch-Verarbeitung

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

  1. Batch-Verarbeitung: Aufteilung der Daten in kleinere, handhabbare Einheiten (Batches) für das Training, was den Speicherverbrauch optimiert und Gradientenaktualisierungen nach jedem Batch erlaubt;
  2. Durchmischung: Zufällige Anordnung des Datensatzes, um etwaige Reihenfolgen in den Daten aufzubrechen und zu verhindern, dass das Modell zufällige Muster erlernt;
  3. Effizientes Laden: Automatische Handhabung des Ladens und der Vorverarbeitung der Daten für jedes 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 Konfiguration 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 unbekannte Daten zu generalisieren.

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

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 5

bookArbeiten mit Datasets

Swipe um das Menü anzuzeigen

Um die Datenvorbereitung für Machine-Learning-Modelle zu vereinfachen und eine effiziente Stapelverarbeitung, Durchmischung und Datenverwaltung zu ermöglichen, stellt PyTorch die Hilfsfunktionen TensorDataset und DataLoader bereit.

Laden und Inspizieren des Datensatzes

Wir verwenden einen Datensatz (wine.csv), der Informationen über verschiedene Weinsorten, deren Merkmale und zugehörige Klassenlabels enthält.

Zunächst laden wir den Datensatz und untersuchen dessen 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

Im nächsten Schritt werden die Merkmale und das Ziel getrennt, in PyTorch-Tensoren umgewandelt und diese Tensoren direkt zur Erstellung eines TensorDataset verwendet. Wir stellen sicher, dass die Merkmale vom Typ float32 sind (zur Verarbeitung von Fließkommazahlen) und das Ziel vom Typ long (ein 64-Bit-Ganzzahltyp, der sich für Labels eignet).

import pandas as pd
import torch
from torch.utils.data import TensorDataset
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
)

Verwendung von DataLoader für Batch-Verarbeitung

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

  1. Batch-Verarbeitung: Aufteilung der Daten in kleinere, handhabbare Einheiten (Batches) für das Training, was den Speicherverbrauch optimiert und Gradientenaktualisierungen nach jedem Batch erlaubt;
  2. Durchmischung: Zufällige Anordnung des Datensatzes, um etwaige Reihenfolgen in den Daten aufzubrechen und zu verhindern, dass das Modell zufällige Muster erlernt;
  3. Effizientes Laden: Automatische Handhabung des Ladens und der Vorverarbeitung der Daten für jedes 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 Konfiguration 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 unbekannte Daten zu generalisieren.

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
some-alt