Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Arbeide med datasett | Mer Avanserte Konsepter
PyTorch-essensielt

bookArbeide med datasett

For å forenkle datapreparering for maskinlæringsmodeller og muliggjøre effektiv batch-prosessering, shuffling og datahåndtering, tilbyr PyTorch verktøyene TensorDataset og DataLoader.

Laste inn og inspisere datasettet

Vi bruker et datasett (wine.csv) som inneholder data om ulike typer vin, inkludert deres egenskaper og tilhørende klasselabels.

Først skal vi laste inn datasettet og inspisere dets struktur for å forstå egenskapene og målvariabelen:

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

Opprette et TensorDataset

Neste steg er å separere egenskaper og målvariabel, konvertere dem til PyTorch-tensorer, og bruke disse tensorene direkte for å opprette et TensorDataset. Vi sørger for at egenskapene er av typen float32 (for håndtering av flyttall) og målvariabelen er av typen long (en 64-bits heltallstype egnet for etiketter).

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
)

Bruke DataLoader for batch-prosessering

For å legge til rette for batch-prosessering, shuffling og effektiv datalasting under trening, pakker vi inn TensorDataset i en DataLoader. Dette steget er avgjørende for å håndtere datastrømmen til modellen under trening, spesielt når man arbeider med større datasett. DataLoader gir oss mulighet til å:

  1. Batch-prosessere: dele opp dataene i mindre, håndterbare deler (batcher) for trening, noe som optimaliserer minnebruk og tillater gradientoppdateringer etter hver batch;
  2. Shuffle: randomisere rekkefølgen på datasettet, noe som bidrar til å bryte opp innebygd rekkefølge i dataene og hindrer modellen i å lære tilfeldige mønstre;
  3. Effektiv lasting: automatisk håndtere innhenting og forhåndsprosessering av data for hver batch under trening, noe som reduserer 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 oppsettet sørger DataLoader for at modellen mottar datapartier effektivt og i tilfeldig rekkefølge. Dette er spesielt viktig ved trening av nevrale nettverk, da det hjelper modellen å generalisere bedre til ukjente data.

Iterere over DataLoader

Vi kan nå iterere over DataLoader for å få tilgang til datapartier. Hvert parti inneholder 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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 5

bookArbeide med datasett

Sveip for å vise menyen

For å forenkle datapreparering for maskinlæringsmodeller og muliggjøre effektiv batch-prosessering, shuffling og datahåndtering, tilbyr PyTorch verktøyene TensorDataset og DataLoader.

Laste inn og inspisere datasettet

Vi bruker et datasett (wine.csv) som inneholder data om ulike typer vin, inkludert deres egenskaper og tilhørende klasselabels.

Først skal vi laste inn datasettet og inspisere dets struktur for å forstå egenskapene og målvariabelen:

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

Opprette et TensorDataset

Neste steg er å separere egenskaper og målvariabel, konvertere dem til PyTorch-tensorer, og bruke disse tensorene direkte for å opprette et TensorDataset. Vi sørger for at egenskapene er av typen float32 (for håndtering av flyttall) og målvariabelen er av typen long (en 64-bits heltallstype egnet for etiketter).

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
)

Bruke DataLoader for batch-prosessering

For å legge til rette for batch-prosessering, shuffling og effektiv datalasting under trening, pakker vi inn TensorDataset i en DataLoader. Dette steget er avgjørende for å håndtere datastrømmen til modellen under trening, spesielt når man arbeider med større datasett. DataLoader gir oss mulighet til å:

  1. Batch-prosessere: dele opp dataene i mindre, håndterbare deler (batcher) for trening, noe som optimaliserer minnebruk og tillater gradientoppdateringer etter hver batch;
  2. Shuffle: randomisere rekkefølgen på datasettet, noe som bidrar til å bryte opp innebygd rekkefølge i dataene og hindrer modellen i å lære tilfeldige mønstre;
  3. Effektiv lasting: automatisk håndtere innhenting og forhåndsprosessering av data for hver batch under trening, noe som reduserer 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 oppsettet sørger DataLoader for at modellen mottar datapartier effektivt og i tilfeldig rekkefølge. Dette er spesielt viktig ved trening av nevrale nettverk, da det hjelper modellen å generalisere bedre til ukjente data.

Iterere over DataLoader

Vi kan nå iterere over DataLoader for å få tilgang til datapartier. Hvert parti inneholder 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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 5
some-alt