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
Voor het faciliteren van batchverwerking, shuffelen en efficiënte gegevensinvoer tijdens het trainen, wordt de TensorDataset verpakt in een DataLoader. Deze stap is essentieel voor het beheren van de gegevensstroom naar het model tijdens training, vooral bij werken met grotere datasets. De DataLoader biedt de mogelijkheid tot:
- Batchverwerking: het splitsen van de gegevens in kleinere, beheersbare delen (batches) voor training, wat het geheugengebruik optimaliseert en gradatie-updates na elke batch mogelijk maakt;
- Shuffelen: het willekeurig ordenen van de dataset, wat helpt om eventuele inherente volgorde in de gegevens te doorbreken en voorkomt dat het model willekeurige patronen leert;
- Efficiënte gegevensinvoer: automatisch afhandelen van het ophalen en voorbewerken van gegevens voor elke batch tijdens training, waardoor 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 configuratie 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 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.
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
Voor het faciliteren van batchverwerking, shuffelen en efficiënte gegevensinvoer tijdens het trainen, wordt de TensorDataset verpakt in een DataLoader. Deze stap is essentieel voor het beheren van de gegevensstroom naar het model tijdens training, vooral bij werken met grotere datasets. De DataLoader biedt de mogelijkheid tot:
- Batchverwerking: het splitsen van de gegevens in kleinere, beheersbare delen (batches) voor training, wat het geheugengebruik optimaliseert en gradatie-updates na elke batch mogelijk maakt;
- Shuffelen: het willekeurig ordenen van de dataset, wat helpt om eventuele inherente volgorde in de gegevens te doorbreken en voorkomt dat het model willekeurige patronen leert;
- Efficiënte gegevensinvoer: automatisch afhandelen van het ophalen en voorbewerken van gegevens voor elke batch tijdens training, waardoor 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 configuratie 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 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!