НачатьНачать бесплатно

Обучение моделей с несколькими выходами

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

В данном случае модель производит два выхода: предсказания для алфавита и для символа. Для каждого из них есть соответствующие истинные метки, что позволяет вычислить две отдельные потери: одну — за ошибки при классификации алфавита, другую — за ошибки при классификации символа. Поскольку в обоих случаях решается задача многоклассовой классификации, к каждому из них можно применить функцию потерь Cross-Entropy.

Однако градиентный спуск оптимизирует только одну функцию потерь. Поэтому общую потерю определим как сумму потерь по алфавиту и по символу.

Это упражнение является частью курса

Глубокое обучение на 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()
Редактировать и запускать код