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, jotta arvioinnin aikana käyttäytyminen on johdonmukaista; -
Poista gradienttien seuranta käytöstä: käytä
torch.no_grad()säästääksesi muistia ja nopeuttaaksesi laskentaa, koska arvioinnissa gradientteja ei tarvita.
# 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 (raaka-arvot). Ennustettujen luokkien tunnisteiden saamiseksi käytetään torch.argmax-funktiota, joka palauttaa suurimman arvon indeksin luokkadimensiolla.
# 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ätasapainossa — eli yksi luokka on selvästi yliedustettuna muihin verrattuna — tarkkuus voi olla harhaanjohtavaa. Malli, joka ennustaa aina enemmistöluokan, voi saavuttaa korkean tarkkuuden, mutta ei silti kuvaa todellista suorituskykyä kaikkien luokkien osalta.
Syvällisemmän käsityksen saamiseksi mallin suorituskyvystä voidaan laskea lisämetriikoita, kuten precision (täsmällisyys), recall (herkkyys) ja F1-score. Voit lukea lisää näistä metriikoista ja niiden kaavoista 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