Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Оцінювання Моделі | Секція
Practice
Projects
Quizzes & Challenges
Вікторини
Challenges
/
PyTorch: Основи для ML-Інженера

bookОцінювання Моделі

Підготовка до оцінювання

Перед початком процесу оцінювання на тестовому наборі необхідно переконатися у наступному:

  1. Перевести модель у режим оцінювання: використовуйте model.eval(), щоб вимкнути такі функції, як dropout та batch normalization, забезпечуючи стабільну поведінку під час оцінювання;

  2. Вимкнути відстеження градієнтів: використовуйте 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}%")
Note
Вивчайте більше

Коли датасет є несбалансованим — тобто одна з клас значно переважає інші — точність може бути оманливою. Модель, яка завжди прогнозує більшість, може досягати високої точності, але не відображати реальну ефективність для всіх класів.

Для отримання глибшого розуміння ефективності моделі можна розрахувати додаткові метрики, такі як точність (precision), повнота (recall) та F1-міра. Докладніше про ці метрики та їх формули можна дізнатися у цій статті, використовуючи відповідні формули.

Повна реалізація

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

Який з наступних кроків є необхідним під час оцінювання навченої моделі PyTorch?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 19

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookОцінювання Моделі

Свайпніть щоб показати меню

Підготовка до оцінювання

Перед початком процесу оцінювання на тестовому наборі необхідно переконатися у наступному:

  1. Перевести модель у режим оцінювання: використовуйте model.eval(), щоб вимкнути такі функції, як dropout та batch normalization, забезпечуючи стабільну поведінку під час оцінювання;

  2. Вимкнути відстеження градієнтів: використовуйте 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}%")
Note
Вивчайте більше

Коли датасет є несбалансованим — тобто одна з клас значно переважає інші — точність може бути оманливою. Модель, яка завжди прогнозує більшість, може досягати високої точності, але не відображати реальну ефективність для всіх класів.

Для отримання глибшого розуміння ефективності моделі можна розрахувати додаткові метрики, такі як точність (precision), повнота (recall) та F1-міра. Докладніше про ці метрики та їх формули можна дізнатися у цій статті, використовуючи відповідні формули.

Повна реалізація

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

Який з наступних кроків є необхідним під час оцінювання навченої моделі PyTorch?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 19
some-alt