Arbeiten 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:
123import 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())
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:
- 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;
- 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;
- 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://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 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):
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
Großartig!
Completion Rate verbessert auf 5
Arbeiten 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:
123import 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())
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:
- 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;
- 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;
- 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://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 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):
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!