Työskentely Tietoaineistojen Kanssa
Koneoppimismallien datan esikäsittelyn yksinkertaistamiseksi sekä tehokkaan eräkäsittelyn, sekoittamisen ja datan hallinnan mahdollistamiseksi PyTorch tarjoaa TensorDataset- ja DataLoader-työkalut.
Datan lataaminen ja tarkastelu
Käytämme datasarjaa (wine.csv), joka sisältää tietoja erilaisista viineistä, niiden ominaisuuksista ja vastaavista luokkamerkinnöistä.
Ensiksi ladataan datasarja ja tarkastellaan sen rakennetta, jotta ymmärrämme ominaisuudet ja kohdemuuttujan:
123import 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())
TensorDatasetin luominen
Seuraavaksi erotellaan piirteet ja kohde, muunnetaan ne PyTorch-tensoreiksi ja käytetään näitä tensoreita suoraan TensorDataset-olion luomiseen. Varmistetaan, että piirteet ovat tyyppiä float32 (liukulukuja varten) ja kohde on tyyppiä long (64-bittinen kokonaislukutyyppi, joka soveltuu luokkamerkinnöille).
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
)
DataLoaderin käyttäminen eräajoon
Jotta voidaan mahdollistaa eräajo, sekoittaminen ja tehokas datan lataus koulutuksen aikana, kääritään TensorDataset DataLoader-olioon. Tämä vaihe on olennainen datan hallinnassa mallin koulutuksen aikana, erityisesti suurten aineistojen kanssa työskenneltäessä. DataLoader mahdollistaa:
- Eräajon: jakaa datan pienempiin, hallittaviin osiin (eriin) koulutusta varten, mikä optimoi muistin käyttöä ja mahdollistaa gradienttien päivityksen jokaisen erän jälkeen;
- Sekoittamisen: satunnaistaa aineiston järjestyksen, mikä auttaa poistamaan mahdolliset järjestysriippuvuudet ja estää mallia oppimasta virheellisiä kaavoja;
- Tehokkaan latauksen: huolehtii automaattisesti datan hakemisesta ja esikäsittelystä jokaiselle erälle koulutuksen aikana, mikä vähentää ylikuormitusta.
123456789101112131415161718import 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 )
Tämän asetuksen avulla DataLoader varmistaa, että malli vastaanottaa tietoa erissä tehokkaasti ja satunnaisessa järjestyksessä. Tämä on erityisen tärkeää neuroverkkojen koulutuksessa, sillä se auttaa mallia yleistämään paremmin aiemmin näkemättömään dataan.
DataLoaderin läpikäynti
Voimme nyt käydä DataLoader läpi saadaksemme tietoa erissä. Jokainen erä sisältää tuplen (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)
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 5
Työskentely Tietoaineistojen Kanssa
Pyyhkäise näyttääksesi valikon
Koneoppimismallien datan esikäsittelyn yksinkertaistamiseksi sekä tehokkaan eräkäsittelyn, sekoittamisen ja datan hallinnan mahdollistamiseksi PyTorch tarjoaa TensorDataset- ja DataLoader-työkalut.
Datan lataaminen ja tarkastelu
Käytämme datasarjaa (wine.csv), joka sisältää tietoja erilaisista viineistä, niiden ominaisuuksista ja vastaavista luokkamerkinnöistä.
Ensiksi ladataan datasarja ja tarkastellaan sen rakennetta, jotta ymmärrämme ominaisuudet ja kohdemuuttujan:
123import 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())
TensorDatasetin luominen
Seuraavaksi erotellaan piirteet ja kohde, muunnetaan ne PyTorch-tensoreiksi ja käytetään näitä tensoreita suoraan TensorDataset-olion luomiseen. Varmistetaan, että piirteet ovat tyyppiä float32 (liukulukuja varten) ja kohde on tyyppiä long (64-bittinen kokonaislukutyyppi, joka soveltuu luokkamerkinnöille).
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
)
DataLoaderin käyttäminen eräajoon
Jotta voidaan mahdollistaa eräajo, sekoittaminen ja tehokas datan lataus koulutuksen aikana, kääritään TensorDataset DataLoader-olioon. Tämä vaihe on olennainen datan hallinnassa mallin koulutuksen aikana, erityisesti suurten aineistojen kanssa työskenneltäessä. DataLoader mahdollistaa:
- Eräajon: jakaa datan pienempiin, hallittaviin osiin (eriin) koulutusta varten, mikä optimoi muistin käyttöä ja mahdollistaa gradienttien päivityksen jokaisen erän jälkeen;
- Sekoittamisen: satunnaistaa aineiston järjestyksen, mikä auttaa poistamaan mahdolliset järjestysriippuvuudet ja estää mallia oppimasta virheellisiä kaavoja;
- Tehokkaan latauksen: huolehtii automaattisesti datan hakemisesta ja esikäsittelystä jokaiselle erälle koulutuksen aikana, mikä vähentää ylikuormitusta.
123456789101112131415161718import 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 )
Tämän asetuksen avulla DataLoader varmistaa, että malli vastaanottaa tietoa erissä tehokkaasti ja satunnaisessa järjestyksessä. Tämä on erityisen tärkeää neuroverkkojen koulutuksessa, sillä se auttaa mallia yleistämään paremmin aiemmin näkemättömään dataan.
DataLoaderin läpikäynti
Voimme nyt käydä DataLoader läpi saadaksemme tietoa erissä. Jokainen erä sisältää tuplen (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)
Kiitos palautteestasi!