Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Evaluering av Modellen | Seksjon
Practice
Projects
Quizzes & Challenges
Quizer
Challenges
/
PyTorch-essensielt for ML-ingeniør

bookEvaluering av Modellen

Forberedelse til evaluering

Før du starter evalueringsprosessen på testsettet, må du sørge for følgende:

  1. Sett modellen i evalueringsmodus: bruk model.eval() for å deaktivere funksjoner som dropout og batch normalisering, slik at du får konsistent oppførsel under evaluering;

  2. Deaktiver sporing av gradienter: bruk torch.no_grad() for å spare minne og øke hastigheten på beregningene, siden gradienter ikke er nødvendig under evaluering.

# 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)

Konvertering av prediksjoner

Som tidligere nevnt vil utdataene fra modellen være logits (rå score). For å få de predikerte klasselabelene bruker vi torch.argmax for å hente ut indeksen til den høyeste verdien langs klassedimensjonen.

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

Beregning av metrikker

For klassifiseringsproblemer er nøyaktighet et nyttig utgangspunkt, forutsatt at datasettet er balansert.

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

Når datasettet er ubalansert — det vil si at én klasse er betydelig større enn de andre — kan nøyaktighet være misvisende. En modell som alltid forutsier majoritetsklassen kan oppnå høy nøyaktighet, men likevel ikke fange opp den reelle ytelsen på tvers av alle klasser.

For å få dypere innsikt i modellens ytelse, kan du beregne flere metrikker som presisjon, tilbakekalling og F1-score. Du kan lære mer om disse metrikker og deres formler i denne artikkelen, ved å bruke deres respektive formler.

Fullstendig implementering

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

Hvilket av følgende steg er nødvendig ved evaluering av en trent PyTorch-modell?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 19

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

bookEvaluering av Modellen

Sveip for å vise menyen

Forberedelse til evaluering

Før du starter evalueringsprosessen på testsettet, må du sørge for følgende:

  1. Sett modellen i evalueringsmodus: bruk model.eval() for å deaktivere funksjoner som dropout og batch normalisering, slik at du får konsistent oppførsel under evaluering;

  2. Deaktiver sporing av gradienter: bruk torch.no_grad() for å spare minne og øke hastigheten på beregningene, siden gradienter ikke er nødvendig under evaluering.

# 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)

Konvertering av prediksjoner

Som tidligere nevnt vil utdataene fra modellen være logits (rå score). For å få de predikerte klasselabelene bruker vi torch.argmax for å hente ut indeksen til den høyeste verdien langs klassedimensjonen.

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

Beregning av metrikker

For klassifiseringsproblemer er nøyaktighet et nyttig utgangspunkt, forutsatt at datasettet er balansert.

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

Når datasettet er ubalansert — det vil si at én klasse er betydelig større enn de andre — kan nøyaktighet være misvisende. En modell som alltid forutsier majoritetsklassen kan oppnå høy nøyaktighet, men likevel ikke fange opp den reelle ytelsen på tvers av alle klasser.

For å få dypere innsikt i modellens ytelse, kan du beregne flere metrikker som presisjon, tilbakekalling og F1-score. Du kan lære mer om disse metrikker og deres formler i denne artikkelen, ved å bruke deres respektive formler.

Fullstendig implementering

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

Hvilket av følgende steg er nødvendig ved evaluering av en trent PyTorch-modell?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 19
some-alt