Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Évaluation du Modèle | Section
Essentiels de PyTorch pour Ingénieur ML

bookÉ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 :

  1. 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 ;

  2. 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 à des logits (scores bruts). Pour obtenir les étiquettes de classe prédites, il convient d'utiliser 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}%")
Note
Approfondir

Lorsque le jeu de données est déséquilibré — c’est-à-dire qu’une classe est nettement plus représentée que les autres — la précision peut être trompeuse. Un modèle qui prédit toujours la classe majoritaire peut obtenir une précision élevée, tout en ne reflétant pas la performance réelle sur l’ensemble des classes.

Pour obtenir une analyse 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

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

Laquelle des étapes suivantes est nécessaire lors de l'évaluation d'un modèle PyTorch entraîné ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 19

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

bookÉ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 :

  1. 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 ;

  2. 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 à des logits (scores bruts). Pour obtenir les étiquettes de classe prédites, il convient d'utiliser 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}%")
Note
Approfondir

Lorsque le jeu de données est déséquilibré — c’est-à-dire qu’une classe est nettement plus représentée que les autres — la précision peut être trompeuse. Un modèle qui prédit toujours la classe majoritaire peut obtenir une précision élevée, tout en ne reflétant pas la performance réelle sur l’ensemble des classes.

Pour obtenir une analyse 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

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

Laquelle des étapes suivantes est nécessaire lors de l'évaluation d'un modèle PyTorch entraîné ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 19
some-alt