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

bookMallin Arviointi

Arvioinnin valmistelu

Ennen arviointiprosessin aloittamista testijoukolla varmista seuraavat asiat:

  1. Aseta malli arviointitilaan: käytä model.eval() poistaaksesi käytöstä ominaisuudet kuten dropout ja batch normalization, mikä varmistaa johdonmukaisen toiminnan arvioinnin aikana;

  2. Poista gradienttien seuranta käytöstä: käytä torch.no_grad() säästääksesi muistia ja nopeuttaaksesi laskentaa, koska gradientteja ei tarvita arvioinnissa.

# Set the model to evaluation mode
model.eval()
# Disable gradient computation for evaluation
with torch.no_grad():
    # Forward pass on the test data
    test_predictions = model(X_test)

Ennusteiden muuntaminen

Kuten aiemmin mainittiin, mallin tuotos on logitit (raakapisteet). Ennustettujen luokkien tunnisteiden saamiseksi käytetään torch.argmax -funktiota, joka palauttaa suurimman arvon indeksin luokkadimensiosta.

# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)

Mittareiden laskeminen

Luokittelutehtävissä tarkkuus on hyödyllinen lähtömittari, mikäli aineisto on tasapainoinen.

# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
Note
Opiskele lisää

Kun tietoaineisto on epätasapainoinen — eli yksi luokka on selvästi muita suurempi — tarkkuus voi olla harhaanjohtavaa. Malli, joka ennustaa aina enemmistöluokan, voi saavuttaa korkean tarkkuuden, mutta ei silti kuvaa todellista suorituskykyä kaikissa luokissa.

Syvällisemmän käsityksen saamiseksi mallin suorituskyvystä voidaan laskea lisämetriikoita, kuten precision (täsmällisyys), recall (herkkyys) ja F1-score. Näistä metriikoista ja niiden kaavoista voit lukea lisää tässä artikkelissa, käyttäen niiden omia kaavoja.

Koko toteutus

123456789101112131415161718
import torch import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_3/model_training.py 2>/dev/null') from model_training import model, X_test, y_test # Set model to evaluation mode model.eval() # Disable gradient tracking with torch.no_grad(): # Forward pass test_predictions = model(X_test) # Get predicted classes predicted_labels = torch.argmax(test_predictions, dim=1) # Calculate accuracy correct_predictions = (predicted_labels == y_test).sum().item() accuracy = correct_predictions / len(y_test) * 100 print(f"Test accuracy: {accuracy:.2f}%")
copy
question mark

Mikä seuraavista vaiheista on välttämätön arvioitaessa koulutettua PyTorch-mallia?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 19

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

bookMallin Arviointi

Pyyhkäise näyttääksesi valikon

Arvioinnin valmistelu

Ennen arviointiprosessin aloittamista testijoukolla varmista seuraavat asiat:

  1. Aseta malli arviointitilaan: käytä model.eval() poistaaksesi käytöstä ominaisuudet kuten dropout ja batch normalization, mikä varmistaa johdonmukaisen toiminnan arvioinnin aikana;

  2. Poista gradienttien seuranta käytöstä: käytä torch.no_grad() säästääksesi muistia ja nopeuttaaksesi laskentaa, koska gradientteja ei tarvita arvioinnissa.

# Set the model to evaluation mode
model.eval()
# Disable gradient computation for evaluation
with torch.no_grad():
    # Forward pass on the test data
    test_predictions = model(X_test)

Ennusteiden muuntaminen

Kuten aiemmin mainittiin, mallin tuotos on logitit (raakapisteet). Ennustettujen luokkien tunnisteiden saamiseksi käytetään torch.argmax -funktiota, joka palauttaa suurimman arvon indeksin luokkadimensiosta.

# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)

Mittareiden laskeminen

Luokittelutehtävissä tarkkuus on hyödyllinen lähtömittari, mikäli aineisto on tasapainoinen.

# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
Note
Opiskele lisää

Kun tietoaineisto on epätasapainoinen — eli yksi luokka on selvästi muita suurempi — tarkkuus voi olla harhaanjohtavaa. Malli, joka ennustaa aina enemmistöluokan, voi saavuttaa korkean tarkkuuden, mutta ei silti kuvaa todellista suorituskykyä kaikissa luokissa.

Syvällisemmän käsityksen saamiseksi mallin suorituskyvystä voidaan laskea lisämetriikoita, kuten precision (täsmällisyys), recall (herkkyys) ja F1-score. Näistä metriikoista ja niiden kaavoista voit lukea lisää tässä artikkelissa, käyttäen niiden omia kaavoja.

Koko toteutus

123456789101112131415161718
import torch import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_3/model_training.py 2>/dev/null') from model_training import model, X_test, y_test # Set model to evaluation mode model.eval() # Disable gradient tracking with torch.no_grad(): # Forward pass test_predictions = model(X_test) # Get predicted classes predicted_labels = torch.argmax(test_predictions, dim=1) # Calculate accuracy correct_predictions = (predicted_labels == y_test).sum().item() accuracy = correct_predictions / len(y_test) * 100 print(f"Test accuracy: {accuracy:.2f}%")
copy
question mark

Mikä seuraavista vaiheista on välttämätön arvioitaessa koulutettua PyTorch-mallia?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 19
some-alt