Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utvärdering av Modellen | Sektion
Pytorch-Grunder för ML-Ingenjör

bookUtvärdering av Modellen

Förberedelse för utvärdering

Innan du påbörjar utvärderingsprocessen på testuppsättningen behöver du säkerställa följande:

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

  2. Inaktivera gradientspårning: använd torch.no_grad() för att spara minne och snabba upp 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)

Omvandla prediktioner

Som vi redan nämnt tidigare kommer modellens utdata att vara logits (råa poäng). För att få de förutsagda klassetiketterna använder vi 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 metrik

För klassificeringsproblem är noggrannhet en användbar startmetrik, 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}%")
Note
Studera Mer

När datasettet är obalanserat — det vill säga att en klass är betydligt större än de andra — kan noggrannhet vara missvisande. En modell som alltid förutsäger majoritetsklassen kan uppnå hög noggrannhet, men misslyckas med att fånga den verkliga prestandan över alla klasser.

För att få djupare insikt i modellens prestanda kan du beräkna ytterligare mått såsom precision, återkallelse och F1-poäng. Du kan läsa mer om dessa mått och deras formler i denna artikel, med hjälp av deras respektive formler.

Fullständig implementering

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

Vilket av följande steg är nödvändigt vid utvärdering av en tränad PyTorch-modell?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 19

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookUtvärdering av Modellen

Svep för att visa menyn

Förberedelse för utvärdering

Innan du påbörjar utvärderingsprocessen på testuppsättningen behöver du säkerställa följande:

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

  2. Inaktivera gradientspårning: använd torch.no_grad() för att spara minne och snabba upp 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)

Omvandla prediktioner

Som vi redan nämnt tidigare kommer modellens utdata att vara logits (råa poäng). För att få de förutsagda klassetiketterna använder vi 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 metrik

För klassificeringsproblem är noggrannhet en användbar startmetrik, 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}%")
Note
Studera Mer

När datasettet är obalanserat — det vill säga att en klass är betydligt större än de andra — kan noggrannhet vara missvisande. En modell som alltid förutsäger majoritetsklassen kan uppnå hög noggrannhet, men misslyckas med att fånga den verkliga prestandan över alla klasser.

För att få djupare insikt i modellens prestanda kan du beräkna ytterligare mått såsom precision, återkallelse och F1-poäng. Du kan läsa mer om dessa mått och deras formler i denna artikel, med hjälp av deras respektive formler.

Fullständig implementering

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

Vilket av följande steg är nödvändigt vid utvärdering av en tränad PyTorch-modell?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 19
some-alt