Utvärdering av Modellen
Förberedelse för utvärdering
Innan utvärderingsprocessen på testuppsättningen påbörjas, behöver följande säkerställas:
-
Sätt modellen i utvärderingsläge: använd
model.eval()för att stänga av funktioner som dropout och batchnormalisering, vilket säkerställer konsekvent beteende under utvärdering; -
Inaktivera gradientspårning: använd
torch.no_grad()för att spara minne och påskynda beräkningar, eftersom gradienter inte behövs vid utvärdering.
# 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)
Omvandling av prediktioner
Som tidigare nämnts kommer modellens utdata att vara logits (råpoäng). För att erhålla de förutsagda klassetiketterna används torch.argmax för att extrahera indexet för det högsta värdet längs klassdimensionen.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Beräkning av mått
För klassificeringsproblem är noggrannhet ett användbart startmått, förutsatt att datasettet är balanserat.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
För att få djupare insikter i modellens prestanda kan du beräkna ytterligare mått såsom precision, recall och F1-score. Du kan läsa mer om dessa mått och deras formler i denna artikel, där deras respektive formler presenteras.
Fullständig 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}%")
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain what precision, recall, and F1-score mean?
How can I calculate precision, recall, and F1-score in PyTorch?
Why is accuracy not always a reliable metric for imbalanced datasets?
Awesome!
Completion rate improved to 5
Utvärdering av Modellen
Svep för att visa menyn
Förberedelse för utvärdering
Innan utvärderingsprocessen på testuppsättningen påbörjas, behöver följande säkerställas:
-
Sätt modellen i utvärderingsläge: använd
model.eval()för att stänga av funktioner som dropout och batchnormalisering, vilket säkerställer konsekvent beteende under utvärdering; -
Inaktivera gradientspårning: använd
torch.no_grad()för att spara minne och påskynda beräkningar, eftersom gradienter inte behövs vid utvärdering.
# 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)
Omvandling av prediktioner
Som tidigare nämnts kommer modellens utdata att vara logits (råpoäng). För att erhålla de förutsagda klassetiketterna används torch.argmax för att extrahera indexet för det högsta värdet längs klassdimensionen.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Beräkning av mått
För klassificeringsproblem är noggrannhet ett användbart startmått, förutsatt att datasettet är balanserat.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
För att få djupare insikter i modellens prestanda kan du beräkna ytterligare mått såsom precision, recall och F1-score. Du kan läsa mer om dessa mått och deras formler i denna artikel, där deras respektive formler presenteras.
Fullständig 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}%")
Tack för dina kommentarer!