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