Оцінювання Моделі
Підготовка до оцінювання
Перед початком процесу оцінювання на тестовому наборі необхідно переконатися у наступному:
-
Перевести модель у режим оцінювання: використовуйте
model.eval(), щоб вимкнути такі функції, як dropout та batch normalization, забезпечуючи стабільну поведінку під час оцінювання; -
Вимкнути відстеження градієнтів: використовуйте
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-міра. Докладніше про ці метрики та їх формули можна дізнатися у цій статті, використовуючи відповідні формули.
Повна реалізація
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}%")
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 5
Оцінювання Моделі
Свайпніть щоб показати меню
Підготовка до оцінювання
Перед початком процесу оцінювання на тестовому наборі необхідно переконатися у наступному:
-
Перевести модель у режим оцінювання: використовуйте
model.eval(), щоб вимкнути такі функції, як dropout та batch normalization, забезпечуючи стабільну поведінку під час оцінювання; -
Вимкнути відстеження градієнтів: використовуйте
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-міра. Докладніше про ці метрики та їх формули можна дізнатися у цій статті, використовуючи відповідні формули.
Повна реалізація
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}%")
Дякуємо за ваш відгук!