Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Arbeiten Mit Datensätzen | Abschnitt
Practice
Projects
Quizzes & Challenges
Quizze
Challenges
/
PyTorch-Grundlagen für ML-Ingenieure

bookArbeiten Mit Datensätzen

Zur Vereinfachung der Datenvorbereitung für Machine-Learning-Modelle sowie zur effizienten Stapelverarbeitung, Durchmischung und Datenverwaltung stellt PyTorch die Hilfsmittel TensorDataset und DataLoader bereit.

Laden und Überprüfen des Datensatzes

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

Zunächst wird der Datensatz geladen und seine Struktur überprüft, um die Merkmale und die Zielvariable zu verstehen:

123
import pandas as pd wine_df = pd.read_csv('https://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. Es wird sichergestellt, 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://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 von 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 ermöglicht;
  2. Durchmischung: Zufällige Anordnung des Datensatzes, um eine mögliche Reihenfolge 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://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 beim Training von neuronalen Netzwerken wichtig, 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
question mark

Was ist der Hauptzweck des Mischens von Daten bei der Verwendung von PyTorchs DataLoader?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 15

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

bookArbeiten Mit Datensätzen

Swipe um das Menü anzuzeigen

Zur Vereinfachung der Datenvorbereitung für Machine-Learning-Modelle sowie zur effizienten Stapelverarbeitung, Durchmischung und Datenverwaltung stellt PyTorch die Hilfsmittel TensorDataset und DataLoader bereit.

Laden und Überprüfen des Datensatzes

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

Zunächst wird der Datensatz geladen und seine Struktur überprüft, um die Merkmale und die Zielvariable zu verstehen:

123
import pandas as pd wine_df = pd.read_csv('https://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. Es wird sichergestellt, 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://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 von 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 ermöglicht;
  2. Durchmischung: Zufällige Anordnung des Datensatzes, um eine mögliche Reihenfolge 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://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 beim Training von neuronalen Netzwerken wichtig, 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
question mark

Was ist der Hauptzweck des Mischens von Daten bei der Verwendung von PyTorchs DataLoader?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 15
some-alt