Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Työskentely Datasettien Kanssa | Edistyneemmät Käsitteet
Pytorchin Perusteet

bookTyöskentely Datasettien 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 sekä vastaavista luokkamerkinnöistä.

Ensiksi ladataan datasarja ja tarkastellaan sen rakennetta, jotta ymmärrämme ominaisuudet ja kohdemuuttujan:

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

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 tyypiltään float32 (liukulukuja varten) ja kohde on tyypiltään 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://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
)

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 tärkeä datan syötön hallinnassa mallille koulutuksen aikana, erityisesti suurten aineistojen kanssa työskenneltäessä. DataLoader mahdollistaa:

  1. Eräajo: jakaa datan pienempiin, hallittaviin osiin (erät) koulutusta varten, mikä optimoi muistin käyttöä ja mahdollistaa gradientin päivitykset jokaisen erän jälkeen;
  2. Sekoittaminen: satunnaistaa aineiston järjestyksen, mikä auttaa poistamaan mahdolliset järjestysriippuvuudet ja estää mallia oppimasta virheellisiä kaavoja;
  3. Tehokas lataus: huolehtii automaattisesti datan hakemisesta ja esikäsittelystä jokaiselle erälle koulutuksen aikana, mikä vähentää ylikuormitusta.
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

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-olion läpi saadaksemme tietoa erissä. Jokainen erä sisältää tuplen (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

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 5

bookTyöskentely Datasettien 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 sekä vastaavista luokkamerkinnöistä.

Ensiksi ladataan datasarja ja tarkastellaan sen rakennetta, jotta ymmärrämme ominaisuudet ja kohdemuuttujan:

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

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 tyypiltään float32 (liukulukuja varten) ja kohde on tyypiltään 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://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
)

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 tärkeä datan syötön hallinnassa mallille koulutuksen aikana, erityisesti suurten aineistojen kanssa työskenneltäessä. DataLoader mahdollistaa:

  1. Eräajo: jakaa datan pienempiin, hallittaviin osiin (erät) koulutusta varten, mikä optimoi muistin käyttöä ja mahdollistaa gradientin päivitykset jokaisen erän jälkeen;
  2. Sekoittaminen: satunnaistaa aineiston järjestyksen, mikä auttaa poistamaan mahdolliset järjestysriippuvuudet ja estää mallia oppimasta virheellisiä kaavoja;
  3. Tehokas lataus: huolehtii automaattisesti datan hakemisesta ja esikäsittelystä jokaiselle erälle koulutuksen aikana, mikä vähentää ylikuormitusta.
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

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-olion läpi saadaksemme tietoa erissä. Jokainen erä sisältää tuplen (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

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5
some-alt