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 | Mere Avancerede Begreber
Pytorch Essentials

bookArbejde med Datasæt

For at forenkle datapreparation til maskinlæringsmodeller og muliggøre effektiv batchbehandling, shuffling og datahåndtering, stiller PyTorch værktøjerne TensorDataset og DataLoader 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://staging-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, der er velegnet til 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
)

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 portioner (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 tilfældige 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://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

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

Det er nu muligt at iterere over DataLoader for at få adgang til datapartier. Hvert parti indeholder en 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

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5

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

Awesome!

Completion rate improved to 5

bookArbejde med Datasæt

Stryg for at vise menuen

For at forenkle datapreparation til maskinlæringsmodeller og muliggøre effektiv batchbehandling, shuffling og datahåndtering, stiller PyTorch værktøjerne TensorDataset og DataLoader 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://staging-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, der er velegnet til 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
)

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 portioner (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 tilfældige 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://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

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

Det er nu muligt at iterere over DataLoader for at få adgang til datapartier. Hvert parti indeholder en 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

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5
some-alt