Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Arbejde med Datasæt | Sektion
Pytorch Essentials for ML-ingeniør

bookArbejde med Datasæt

For at forenkle datapreparation til maskinlæringsmodeller og muliggøre effektiv batch-behandling, shuffling og datahåndtering, stiller PyTorch TensorDataset og DataLoader-værktøjer til rådighed.

Indlæsning og inspektion af datasættet

Vi anvender et datasæt (wine.csv), der indeholder data om forskellige typer vin, herunder deres egenskaber og tilhørende klasselabels.

Først skal datasættet indlæses, og dets struktur inspiceres for at forstå egenskaberne og målvariablen:

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

Oprettelse af et TensorDataset

Næste trin er at adskille features og target, konvertere dem til PyTorch-tensorer, og bruge disse tensorer direkte til at oprette et TensorDataset. Vi sikrer, at features er af typen float32 (til håndtering af flydende tal), og at target er af typen long (en 64-bit heltalstype egnet til 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
)

Brug af DataLoader til batchbehandling

For at muliggøre batchbehandling, shuffling og effektiv dataindlæsning under træning, indpakkes TensorDataset i en DataLoader. Dette trin er afgørende for at styre datastrømmen til modellen under træning, især ved arbejde med større datasæt. DataLoader muliggør:

  1. Batchbehandling: opdeling af data i mindre, håndterbare dele (batches) til træning, hvilket optimerer hukommelsesforbrug og tillader gradientopdateringer efter hver batch;
  2. Shuffling: tilfældig rækkefølge af datasættet, hvilket hjælper med at bryde eventuelle indbyggede mønstre i dataene og forhindrer modellen i at lære utilsigtede sammenhænge;
  3. Effektiv indlæsning: automatisk håndtering af datahentning og forbehandling for hver batch under træning, hvilket reducerer overhead.
123456789101112131415161718
import 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 )
copy

Med denne opsætning sikrer DataLoader, at modellen modtager datapartier effektivt og i tilfældig rækkefølge. Dette er især vigtigt ved træning af neurale netværk, da det hjælper modellen med at generalisere bedre til usete data.

Iteration over DataLoader

Vi kan nu iterere over DataLoader for at få adgang til datapartier. Hvert parti indeholder et 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
question mark

Hvad er hovedformålet med at blande data, når man bruger PyTorch's DataLoader?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 15

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

bookArbejde med Datasæt

Stryg for at vise menuen

For at forenkle datapreparation til maskinlæringsmodeller og muliggøre effektiv batch-behandling, shuffling og datahåndtering, stiller PyTorch TensorDataset og DataLoader-værktøjer til rådighed.

Indlæsning og inspektion af datasættet

Vi anvender et datasæt (wine.csv), der indeholder data om forskellige typer vin, herunder deres egenskaber og tilhørende klasselabels.

Først skal datasættet indlæses, og dets struktur inspiceres for at forstå egenskaberne og målvariablen:

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

Oprettelse af et TensorDataset

Næste trin er at adskille features og target, konvertere dem til PyTorch-tensorer, og bruge disse tensorer direkte til at oprette et TensorDataset. Vi sikrer, at features er af typen float32 (til håndtering af flydende tal), og at target er af typen long (en 64-bit heltalstype egnet til 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
)

Brug af DataLoader til batchbehandling

For at muliggøre batchbehandling, shuffling og effektiv dataindlæsning under træning, indpakkes TensorDataset i en DataLoader. Dette trin er afgørende for at styre datastrømmen til modellen under træning, især ved arbejde med større datasæt. DataLoader muliggør:

  1. Batchbehandling: opdeling af data i mindre, håndterbare dele (batches) til træning, hvilket optimerer hukommelsesforbrug og tillader gradientopdateringer efter hver batch;
  2. Shuffling: tilfældig rækkefølge af datasættet, hvilket hjælper med at bryde eventuelle indbyggede mønstre i dataene og forhindrer modellen i at lære utilsigtede sammenhænge;
  3. Effektiv indlæsning: automatisk håndtering af datahentning og forbehandling for hver batch under træning, hvilket reducerer overhead.
123456789101112131415161718
import 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 )
copy

Med denne opsætning sikrer DataLoader, at modellen modtager datapartier effektivt og i tilfældig rækkefølge. Dette er især vigtigt ved træning af neurale netværk, da det hjælper modellen med at generalisere bedre til usete data.

Iteration over DataLoader

Vi kan nu iterere over DataLoader for at få adgang til datapartier. Hvert parti indeholder et 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
question mark

Hvad er hovedformålet med at blande data, når man bruger PyTorch's DataLoader?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 15
some-alt