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 klasse-labels.
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://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 biedt de mogelijkheid om:
- Batchverwerking: de gegevens 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 gegevens te doorbreken en voorkomt dat het model willekeurige patronen leert;
- Efficiënte gegevensinvoer: 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 ongeziene data.
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.
Geweldig!
Completion tarief verbeterd naar 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 klasse-labels.
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://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 biedt de mogelijkheid om:
- Batchverwerking: de gegevens 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 gegevens te doorbreken en voorkomt dat het model willekeurige patronen leert;
- Efficiënte gegevensinvoer: 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 ongeziene data.
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!