Arbeiten 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:
123import 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())
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:
- Batch-Verarbeitung: Aufteilung der Daten in kleinere, handhabbare Einheiten (Batches) für das Training, was den Speicherverbrauch optimiert und Gradientenaktualisierungen nach jedem Batch erlaubt;
- Durchmischung: Zufällige Anordnung des Datensatzes, um etwaige Reihenfolgen in den Daten aufzubrechen und zu verhindern, dass das Modell zufällige Muster erlernt;
- Effizientes Laden: Automatische Handhabung des Ladens und der Vorverarbeitung der Daten für jedes Batch während des Trainings, wodurch der Overhead reduziert wird.
123456789101112131415161718import 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 )
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)
:
123456789101112131415161718192021222324import 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)
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 5
Arbeiten 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:
123import 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())
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:
- Batch-Verarbeitung: Aufteilung der Daten in kleinere, handhabbare Einheiten (Batches) für das Training, was den Speicherverbrauch optimiert und Gradientenaktualisierungen nach jedem Batch erlaubt;
- Durchmischung: Zufällige Anordnung des Datensatzes, um etwaige Reihenfolgen in den Daten aufzubrechen und zu verhindern, dass das Modell zufällige Muster erlernt;
- Effizientes Laden: Automatische Handhabung des Ladens und der Vorverarbeitung der Daten für jedes Batch während des Trainings, wodurch der Overhead reduziert wird.
123456789101112131415161718import 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 )
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)
:
123456789101112131415161718192021222324import 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)
Danke für Ihr Feedback!