Arbeide 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:
123import 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())
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 å:
- Batch-prosessere: dele dataene inn i mindre, håndterbare deler (batcher) for trening, noe som optimaliserer minnebruk og tillater gradientoppdateringer etter hver batch;
- Shuffle: randomisere rekkefølgen på datasettet, noe som bidrar til å bryte opp innebygd rekkefølge i dataene og forhindrer at modellen lærer tilfeldige mønstre;
- Effektiv lasting: automatisk håndtere innhenting og forhåndsprosessering av data for hver batch under trening, noe som reduserer overhead.
123456789101112131415161718import 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 )
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):
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)
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you explain what the output of the DataLoader iteration looks like?
How do I change the batch size or turn off shuffling in the DataLoader?
What are the benefits of using DataLoader over manual batching?
Awesome!
Completion rate improved to 5
Arbeide 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:
123import 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())
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 å:
- Batch-prosessere: dele dataene inn i mindre, håndterbare deler (batcher) for trening, noe som optimaliserer minnebruk og tillater gradientoppdateringer etter hver batch;
- Shuffle: randomisere rekkefølgen på datasettet, noe som bidrar til å bryte opp innebygd rekkefølge i dataene og forhindrer at modellen lærer tilfeldige mønstre;
- Effektiv lasting: automatisk håndtere innhenting og forhåndsprosessering av data for hver batch under trening, noe som reduserer overhead.
123456789101112131415161718import 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 )
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):
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)
Takk for tilbakemeldingene dine!