Mallin Arviointi
Arvioinnin valmistelu
Ennen arviointiprosessin aloittamista testijoukolla varmista seuraavat asiat:
-
Aseta malli arviointitilaan: käytä
model.eval()poistaaksesi käytöstä ominaisuudet kuten dropout ja batch normalization, mikä varmistaa johdonmukaisen toiminnan arvioinnin aikana; -
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}%")
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
123456789101112131415161718import 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}%")
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Mahtavaa!
Completion arvosana parantunut arvoon 5
Mallin Arviointi
Pyyhkäise näyttääksesi valikon
Arvioinnin valmistelu
Ennen arviointiprosessin aloittamista testijoukolla varmista seuraavat asiat:
-
Aseta malli arviointitilaan: käytä
model.eval()poistaaksesi käytöstä ominaisuudet kuten dropout ja batch normalization, mikä varmistaa johdonmukaisen toiminnan arvioinnin aikana; -
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}%")
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
123456789101112131415161718import 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}%")
Kiitos palautteestasi!