Évaluation du Modèle
Préparation à l'évaluation
Avant de commencer le processus d'évaluation sur le jeu de test, il est nécessaire de vérifier les points suivants :
-
Passer le modèle en mode évaluation : utiliser
model.eval()pour désactiver des fonctionnalités telles que le dropout et la normalisation par lot, garantissant ainsi un comportement cohérent lors de l'évaluation ; -
Désactiver le suivi des gradients : utiliser
torch.no_grad()pour économiser de la mémoire et accélérer les calculs, car les gradients ne sont pas nécessaires pendant l'évaluation.
# 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)
Conversion des prédictions
Comme mentionné précédemment, la sortie du modèle correspond aux logits (scores bruts). Pour obtenir les étiquettes de classe prédites, on utilise torch.argmax afin d'extraire l'indice de la valeur maximale selon la dimension des classes.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Calcul des métriques
Pour les problèmes de classification, l'exactitude constitue une première métrique pertinente, à condition que le jeu de données soit équilibré.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
Pour obtenir une compréhension plus approfondie des performances du modèle, il est possible de calculer des métriques supplémentaires telles que la précision, le rappel et le score F1. Vous pouvez en apprendre davantage sur ces métriques et leurs formules dans cet article, en utilisant leurs formules respectives.
Implémentation complète
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}%")
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
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
Évaluation du Modèle
Glissez pour afficher le menu
Préparation à l'évaluation
Avant de commencer le processus d'évaluation sur le jeu de test, il est nécessaire de vérifier les points suivants :
-
Passer le modèle en mode évaluation : utiliser
model.eval()pour désactiver des fonctionnalités telles que le dropout et la normalisation par lot, garantissant ainsi un comportement cohérent lors de l'évaluation ; -
Désactiver le suivi des gradients : utiliser
torch.no_grad()pour économiser de la mémoire et accélérer les calculs, car les gradients ne sont pas nécessaires pendant l'évaluation.
# 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)
Conversion des prédictions
Comme mentionné précédemment, la sortie du modèle correspond aux logits (scores bruts). Pour obtenir les étiquettes de classe prédites, on utilise torch.argmax afin d'extraire l'indice de la valeur maximale selon la dimension des classes.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Calcul des métriques
Pour les problèmes de classification, l'exactitude constitue une première métrique pertinente, à condition que le jeu de données soit équilibré.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
Pour obtenir une compréhension plus approfondie des performances du modèle, il est possible de calculer des métriques supplémentaires telles que la précision, le rappel et le score F1. Vous pouvez en apprendre davantage sur ces métriques et leurs formules dans cet article, en utilisant leurs formules respectives.
Implémentation complète
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}%")
Merci pour vos commentaires !