Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Työskentely Tietoaineistojen Kanssa | Osio
Practice
Projects
Quizzes & Challenges
Visat
Challenges
/
Pytorch-Osaamisen Perusteet ML-Insinöörille

bookTyö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:

123
import 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())
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 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:

  1. 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;
  2. Sekoittamisen: satunnaistaa aineiston järjestyksen, mikä auttaa poistamaan mahdolliset järjestysriippuvuudet ja estää mallia oppimasta virheellisiä kaavoja;
  3. Tehokkaan latauksen: 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://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 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
question mark

Mikä on tärkein syy datan sekoittamiseen käytettäessä PyTorchin DataLoaderia?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 15

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

bookTyö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:

123
import 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())
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 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:

  1. 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;
  2. Sekoittamisen: satunnaistaa aineiston järjestyksen, mikä auttaa poistamaan mahdolliset järjestysriippuvuudet ja estää mallia oppimasta virheellisiä kaavoja;
  3. Tehokkaan latauksen: 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://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 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
question mark

Mikä on tärkein syy datan sekoittamiseen käytettäessä PyTorchin DataLoaderia?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 15
some-alt