Valutazione del Modello
Preparazione per la Valutazione
Prima di iniziare il processo di valutazione sul test set, è necessario assicurarsi di quanto segue:
-
Impostare il modello in modalità valutazione: utilizzare
model.eval()
per disattivare funzionalità come dropout e batch normalization, garantendo un comportamento coerente durante la valutazione; -
Disabilitare il tracciamento dei gradienti: utilizzare
torch.no_grad()
per risparmiare memoria e velocizzare i calcoli, poiché i gradienti non sono necessari durante la valutazione.
# 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)
Conversione delle Predizioni
Come già menzionato in precedenza, l'output del modello sarà costituito da logits (punteggi grezzi). Per ottenere le etichette di classe previste, si utilizza torch.argmax
per estrarre l'indice del valore massimo lungo la dimensione delle classi.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Calcolo delle Metriche
Per i problemi di classificazione, l'accuratezza è una metrica iniziale utile, a condizione che il dataset sia bilanciato.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
Per ottenere una comprensione più approfondita delle prestazioni del modello, è possibile calcolare metriche aggiuntive come precisione, richiamo e F1-score. Puoi approfondire queste metriche e le loro formule in questo articolo, utilizzando le rispettive formule.
Implementazione completa
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}%")
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain what precision, recall, and F1-score mean?
How can I calculate precision, recall, and F1-score in PyTorch?
Why is it important to use metrics other than accuracy for imbalanced datasets?
Awesome!
Completion rate improved to 5
Valutazione del Modello
Scorri per mostrare il menu
Preparazione per la Valutazione
Prima di iniziare il processo di valutazione sul test set, è necessario assicurarsi di quanto segue:
-
Impostare il modello in modalità valutazione: utilizzare
model.eval()
per disattivare funzionalità come dropout e batch normalization, garantendo un comportamento coerente durante la valutazione; -
Disabilitare il tracciamento dei gradienti: utilizzare
torch.no_grad()
per risparmiare memoria e velocizzare i calcoli, poiché i gradienti non sono necessari durante la valutazione.
# 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)
Conversione delle Predizioni
Come già menzionato in precedenza, l'output del modello sarà costituito da logits (punteggi grezzi). Per ottenere le etichette di classe previste, si utilizza torch.argmax
per estrarre l'indice del valore massimo lungo la dimensione delle classi.
# Convert logits to predicted class labels
predicted_labels = torch.argmax(test_predictions, dim=1)
Calcolo delle Metriche
Per i problemi di classificazione, l'accuratezza è una metrica iniziale utile, a condizione che il dataset sia bilanciato.
# Calculate accuracy
correct_predictions = (predicted_labels == y_test).sum().item()
accuracy = correct_predictions / len(y_test) * 100
print(f"Test accuracy: {accuracy:.2f}%")
Per ottenere una comprensione più approfondita delle prestazioni del modello, è possibile calcolare metriche aggiuntive come precisione, richiamo e F1-score. Puoi approfondire queste metriche e le loro formule in questo articolo, utilizzando le rispettive formule.
Implementazione completa
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}%")
Grazie per i tuoi commenti!