Werken met Datasets
Om de gegevensvoorbereiding voor machine learning-modellen te vereenvoudigen en efficiënte batchverwerking, shuffling en gegevensafhandeling mogelijk te maken, biedt PyTorch de hulpprogramma's TensorDataset en DataLoader.
Laden en Inspecteren van de Dataset
We gebruiken een dataset (wine.csv) met gegevens over verschillende soorten wijn, inclusief hun kenmerken en bijbehorende klasse-labels.
Eerst laden we de dataset en inspecteren we de structuur om inzicht te krijgen in de kenmerken en de doelvariabele:
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())
Een TensorDataset aanmaken
De volgende stap is het scheiden van de features en de target, deze omzetten naar PyTorch-tensors en deze tensors direct gebruiken om een TensorDataset te creëren. We zorgen ervoor dat de features van het type float32 zijn (voor het verwerken van kommagetallen) en de target van het type long (een 64-bits integer-type geschikt voor labels).
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
)
DataLoader gebruiken voor batchverwerking
Om batchverwerking, shuffelen en efficiënte gegevensinvoer tijdens het trainen te faciliteren, wikkelen we de TensorDataset in een DataLoader. Deze stap is essentieel voor het beheren van de gegevensstroom naar het model tijdens het trainen, vooral bij werken met grotere datasets. De DataLoader maakt het mogelijk om:
- Batchverwerking: de gegevens op te splitsen in kleinere, beheersbare delen (batches) voor training, wat het geheugengebruik optimaliseert en gradatie-updates na elke batch mogelijk maakt;
- Shuffelen: de volgorde van de dataset te randomiseren, wat helpt om eventuele inherente volgorde in de gegevens te doorbreken en voorkomt dat het model willekeurige patronen leert;
- Efficiënte invoer: automatisch het ophalen en voorbewerken van gegevens voor elke batch tijdens het trainen af te handelen, waardoor de overhead wordt verminderd.
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 )
Met deze opzet zorgt de DataLoader ervoor dat het model batches van gegevens efficiënt en in willekeurige volgorde ontvangt. Dit is vooral belangrijk bij het trainen van neurale netwerken, omdat het het model helpt beter te generaliseren naar onbekende gegevens.
Itereren over de DataLoader
We kunnen nu over de DataLoader itereren om batches van gegevens te benaderen. Elke batch bevat een tuple (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)
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you explain what the output of the DataLoader iteration looks like?
How do I change the batch size or turn off shuffling in the DataLoader?
What are the benefits of using DataLoader over manual batching?
Awesome!
Completion rate improved to 5
Werken met Datasets
Veeg om het menu te tonen
Om de gegevensvoorbereiding voor machine learning-modellen te vereenvoudigen en efficiënte batchverwerking, shuffling en gegevensafhandeling mogelijk te maken, biedt PyTorch de hulpprogramma's TensorDataset en DataLoader.
Laden en Inspecteren van de Dataset
We gebruiken een dataset (wine.csv) met gegevens over verschillende soorten wijn, inclusief hun kenmerken en bijbehorende klasse-labels.
Eerst laden we de dataset en inspecteren we de structuur om inzicht te krijgen in de kenmerken en de doelvariabele:
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())
Een TensorDataset aanmaken
De volgende stap is het scheiden van de features en de target, deze omzetten naar PyTorch-tensors en deze tensors direct gebruiken om een TensorDataset te creëren. We zorgen ervoor dat de features van het type float32 zijn (voor het verwerken van kommagetallen) en de target van het type long (een 64-bits integer-type geschikt voor labels).
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
)
DataLoader gebruiken voor batchverwerking
Om batchverwerking, shuffelen en efficiënte gegevensinvoer tijdens het trainen te faciliteren, wikkelen we de TensorDataset in een DataLoader. Deze stap is essentieel voor het beheren van de gegevensstroom naar het model tijdens het trainen, vooral bij werken met grotere datasets. De DataLoader maakt het mogelijk om:
- Batchverwerking: de gegevens op te splitsen in kleinere, beheersbare delen (batches) voor training, wat het geheugengebruik optimaliseert en gradatie-updates na elke batch mogelijk maakt;
- Shuffelen: de volgorde van de dataset te randomiseren, wat helpt om eventuele inherente volgorde in de gegevens te doorbreken en voorkomt dat het model willekeurige patronen leert;
- Efficiënte invoer: automatisch het ophalen en voorbewerken van gegevens voor elke batch tijdens het trainen af te handelen, waardoor de overhead wordt verminderd.
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 )
Met deze opzet zorgt de DataLoader ervoor dat het model batches van gegevens efficiënt en in willekeurige volgorde ontvangt. Dit is vooral belangrijk bij het trainen van neurale netwerken, omdat het het model helpt beter te generaliseren naar onbekende gegevens.
Itereren over de DataLoader
We kunnen nu over de DataLoader itereren om batches van gegevens te benaderen. Elke batch bevat een tuple (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)
Bedankt voor je feedback!