Оцінювання Моделі
Свайпніть щоб показати меню
Підготовка до оцінювання
Перед початком процесу оцінювання на тестовому наборі необхідно переконатися у наступному:
-
Перевести модель у режим оцінювання: використовуйте
model.eval(), щоб вимкнути такі функції, як dropout та пакетну нормалізацію, забезпечуючи стабільну поведінку під час оцінювання; -
Вимкнути відстеження градієнтів: використовуйте
torch.no_grad(), щоб зекономити пам'ять і прискорити обчислення, оскільки градієнти під час оцінювання не потрібні.
# 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)
Перетворення передбачень
Як вже згадувалося раніше, вихід моделі — це логіти (сирі оцінки). Щоб отримати передбачені мітки класів, використовується torch.argmax для визначення індексу максимального значення вздовж виміру класу.
# Convert logits to predicted class labels
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}%")
Коли датасет є несбалансованим — тобто одна з класів значно переважає інші — точність може бути оманливою. Модель, яка завжди передбачає більшість, може досягати високої точності, але не відображати реальну ефективність для всіх класів.
Щоб отримати глибше розуміння ефективності моделі, можна розрахувати додаткові метрики, такі як точність (precision), повнота (recall) та F1-міра (F1-score). Детальніше про ці метрики та їх формули можна дізнатися у цій статті, використовуючи відповідні формули.
Повна реалізація
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}%")
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат