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
.
Dataset laden en inspecteren
We gebruiken een dataset (wine.csv
) met gegevens over verschillende soorten wijn, inclusief hun kenmerken en bijbehorende klassenlabels.
Eerst laden we de dataset en inspecteren we de structuur om de kenmerken en de doelvariabele te begrijpen:
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())
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://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
)
DataLoader gebruiken voor batchverwerking
Om batchverwerking, shuffelen en efficiënte data-invoer tijdens het trainen te vergemakkelijken, 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 data op te splitsen in kleinere, beheersbare delen (batches) voor training, wat het geheugengebruik optimaliseert en gradiëntupdates na elke batch mogelijk maakt;
- Shuffelen: de volgorde van de dataset te randomiseren, wat helpt om eventuele inherente volgorde in de data te doorbreken en voorkomt dat het model willekeurige patronen leert;
- Efficiënte data-invoer: automatisch het ophalen en voorbewerken van data voor elke batch tijdens het trainen af te handelen, waardoor overhead wordt verminderd.
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 )
Met deze opzet zorgt de DataLoader
ervoor dat het model batches van data 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 data.
Itereren over de DataLoader
We kunnen nu over de DataLoader
itereren om batches van data te verkrijgen. 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 in the DataLoader?
What should I do if my dataset has missing values?
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
.
Dataset laden en inspecteren
We gebruiken een dataset (wine.csv
) met gegevens over verschillende soorten wijn, inclusief hun kenmerken en bijbehorende klassenlabels.
Eerst laden we de dataset en inspecteren we de structuur om de kenmerken en de doelvariabele te begrijpen:
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())
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://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
)
DataLoader gebruiken voor batchverwerking
Om batchverwerking, shuffelen en efficiënte data-invoer tijdens het trainen te vergemakkelijken, 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 data op te splitsen in kleinere, beheersbare delen (batches) voor training, wat het geheugengebruik optimaliseert en gradiëntupdates na elke batch mogelijk maakt;
- Shuffelen: de volgorde van de dataset te randomiseren, wat helpt om eventuele inherente volgorde in de data te doorbreken en voorkomt dat het model willekeurige patronen leert;
- Efficiënte data-invoer: automatisch het ophalen en voorbewerken van data voor elke batch tijdens het trainen af te handelen, waardoor overhead wordt verminderd.
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 )
Met deze opzet zorgt de DataLoader
ervoor dat het model batches van data 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 data.
Itereren over de DataLoader
We kunnen nu over de DataLoader
itereren om batches van data te verkrijgen. 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!