Evaluering af Modellen
Forberedelse til evaluering
Før du påbegynder evalueringsprocessen på testdatasættet, skal du sikre følgende:
-
Sæt modellen i evalueringsmode: brug
model.eval()
for at deaktivere funktioner som dropout og batch normalization, hvilket sikrer ensartet adfærd under evaluering; -
Deaktiver gradientsporing: brug
torch.no_grad()
for at spare hukommelse og øge beregningshastigheden, da gradients ikke er nødvendige 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 af forudsigelser
Som tidligere nævnt vil outputtet fra modellen være logits (rå score). For at få de forudsagte klasselabels anvendes torch.argmax
til at udtrække indekset for den maksimale værdi langs klassedimensionen.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Beregning af metrikker
For klassifikationsproblemer er nøjagtighed en nyttig startmetrik, forudsat at datasættet er balanceret.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
For at opnå dybere indsigt i modellens ydeevne kan du beregne yderligere metrikker såsom præcision, recall og F1-score. Du kan lære mere om disse metrikker og deres formler i denne artikel, hvor deres respektive formler gennemgås.
Fuld implementering
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}%")
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 5
Evaluering af Modellen
Stryg for at vise menuen
Forberedelse til evaluering
Før du påbegynder evalueringsprocessen på testdatasættet, skal du sikre følgende:
-
Sæt modellen i evalueringsmode: brug
model.eval()
for at deaktivere funktioner som dropout og batch normalization, hvilket sikrer ensartet adfærd under evaluering; -
Deaktiver gradientsporing: brug
torch.no_grad()
for at spare hukommelse og øge beregningshastigheden, da gradients ikke er nødvendige 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 af forudsigelser
Som tidligere nævnt vil outputtet fra modellen være logits (rå score). For at få de forudsagte klasselabels anvendes torch.argmax
til at udtrække indekset for den maksimale værdi langs klassedimensionen.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Beregning af metrikker
For klassifikationsproblemer er nøjagtighed en nyttig startmetrik, forudsat at datasættet er balanceret.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
For at opnå dybere indsigt i modellens ydeevne kan du beregne yderligere metrikker såsom præcision, recall og F1-score. Du kan lære mere om disse metrikker og deres formler i denne artikel, hvor deres respektive formler gennemgås.
Fuld implementering
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}%")
Tak for dine kommentarer!