Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Werken met Datasets | Meer Geavanceerde Concepten
PyTorch Essentials

bookWerken 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:

123
import 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())
copy

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:

  1. 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;
  2. 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;
  3. Efficiënte data-invoer: automatisch het ophalen en voorbewerken van data voor elke batch tijdens het trainen af te handelen, waardoor overhead wordt verminderd.
123456789101112131415161718
import 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 )
copy

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):

123456789101112131415161718192021222324
import 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)
copy

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

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

bookWerken 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:

123
import 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())
copy

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:

  1. 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;
  2. 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;
  3. Efficiënte data-invoer: automatisch het ophalen en voorbewerken van data voor elke batch tijdens het trainen af te handelen, waardoor overhead wordt verminderd.
123456789101112131415161718
import 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 )
copy

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):

123456789101112131415161718192021222324
import 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)
copy

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5
some-alt