Обучение моделей с несколькими выходами
При обучении моделей с несколькими выходами важно правильно определить функцию потерь.
В данном случае модель производит два выхода: предсказания для алфавита и для символа. Для каждого из них есть соответствующие истинные метки, что позволяет вычислить две отдельные потери: одну — за ошибки при классификации алфавита, другую — за ошибки при классификации символа. Поскольку в обоих случаях решается задача многоклассовой классификации, к каждому из них можно применить функцию потерь 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()