Evaluatie van het Model
Voorbereiden op Evaluatie
Voordat het evaluatieproces op de testset wordt gestart, dient het volgende te worden gewaarborgd:
-
Zet het model in evaluatiemodus: gebruik
model.eval()om functies zoals dropout en batchnormalisatie uit te schakelen, zodat het gedrag tijdens evaluatie consistent blijft; -
Schakel het bijhouden van gradiënten uit: gebruik
torch.no_grad()om geheugen te besparen en berekeningen te versnellen, aangezien gradiënten niet nodig zijn tijdens evaluatie.
# 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)
Converteren van Voorspellingen
Zoals eerder vermeld, zal de uitvoer van het model bestaan uit logits (ruwe scores). Om de voorspelde klassenlabels te verkrijgen, wordt torch.argmax gebruikt om de index van de maximale waarde langs de klassendimensie te extraheren.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Berekenen van Metrieken
Voor classificatieproblemen is nauwkeurigheid een nuttige startmetriek, mits de dataset in balans is.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
Wanneer de dataset onevenwichtig is — wat betekent dat één klasse aanzienlijk groter is dan de andere — kan nauwkeurigheid misleidend zijn. Een model dat altijd de meerderheidsklasse voorspelt, kan een hoge nauwkeurigheid behalen, maar slaagt er niet in om de werkelijke prestaties over alle klassen te meten.
Voor diepgaandere inzichten in de modelprestaties kunnen aanvullende metriekwaarden zoals precisie, herinnering en F1-score worden berekend. Meer informatie over deze metriekwaarden en hun formules is te vinden in dit artikel, met behulp van hun respectievelijke formules.
Volledige Implementatie
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}%")
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Geweldig!
Completion tarief verbeterd naar 5
Evaluatie van het Model
Veeg om het menu te tonen
Voorbereiden op Evaluatie
Voordat het evaluatieproces op de testset wordt gestart, dient het volgende te worden gewaarborgd:
-
Zet het model in evaluatiemodus: gebruik
model.eval()om functies zoals dropout en batchnormalisatie uit te schakelen, zodat het gedrag tijdens evaluatie consistent blijft; -
Schakel het bijhouden van gradiënten uit: gebruik
torch.no_grad()om geheugen te besparen en berekeningen te versnellen, aangezien gradiënten niet nodig zijn tijdens evaluatie.
# 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)
Converteren van Voorspellingen
Zoals eerder vermeld, zal de uitvoer van het model bestaan uit logits (ruwe scores). Om de voorspelde klassenlabels te verkrijgen, wordt torch.argmax gebruikt om de index van de maximale waarde langs de klassendimensie te extraheren.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Berekenen van Metrieken
Voor classificatieproblemen is nauwkeurigheid een nuttige startmetriek, mits de dataset in balans is.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
Wanneer de dataset onevenwichtig is — wat betekent dat één klasse aanzienlijk groter is dan de andere — kan nauwkeurigheid misleidend zijn. Een model dat altijd de meerderheidsklasse voorspelt, kan een hoge nauwkeurigheid behalen, maar slaagt er niet in om de werkelijke prestaties over alle klassen te meten.
Voor diepgaandere inzichten in de modelprestaties kunnen aanvullende metriekwaarden zoals precisie, herinnering en F1-score worden berekend. Meer informatie over deze metriekwaarden en hun formules is te vinden in dit artikel, met behulp van hun respectievelijke formules.
Volledige Implementatie
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}%")
Bedankt voor je feedback!