ПочатиПочніть безкоштовно

Навчання моделей із кількома виходами

Під час навчання моделей із кількома виходами важливо правильно визначити функцію втрат.

У цьому прикладі модель повертає два виходи: передбачення для абетки та для символу. Для кожного з них є відповідні еталонні мітки, завдяки яким ви зможете обчислити дві окремі втрати: одну — за неправильні класифікації абетки, іншу — за неправильну класифікацію символу. Оскільки в обох випадках ідеться про задачу багатокласової класифікації, щоразу можна застосувати втрату перехресної ентропії (Cross-Entropy).

Однак градієнтний спуск може оптимізувати лише одну функцію втрат. Тому ви визначите сукупну втрату як суму втрат для абетки й для символу.

Ця вправа є частиною курсу

Середній рівень Deep Learning з PyTorch

Переглянути курс

Інструкції до вправи

  • Обчисліть втрату для класифікації абетки та присвойте її змінній loss_alpha.
  • Обчисліть втрату для класифікації символу та присвойте її змінній loss_char.
  • Обчисліть загальну втрату як суму двох часткових втрат і присвойте її змінній loss.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.05)

for epoch in range(1):
    for images, labels_alpha, labels_char in dataloader_train:
        optimizer.zero_grad()
        outputs_alpha, outputs_char = net(images)
        # Compute alphabet classification loss
        loss_alpha = ____
        # Compute character classification loss
        loss_char = ____
        # Compute total loss
        loss = ____
        loss.backward()
        optimizer.step()
Редагувати та запускати код