Začněte nyníZačněte zdarma

Trénování modelů s více výstupy

Při trénování modelů s více výstupy je zásadní správně definovat ztrátovou funkci.

V tomto případě model produkuje dva výstupy: predikce pro abecedu a pro znak. Ke každému z nich existují odpovídající pravdivostní popisky, které ti umožní vypočítat dvě samostatné ztráty: jednu za nesprávnou klasifikaci abecedy a druhou za nesprávnou klasifikaci znaku. Protože se v obou případech jedná o úlohu klasifikace více tříd, lze pokaždé použít Cross-Entropy loss.

Gradientový sestup však dokáže optimalizovat pouze jednu ztrátovou funkci. Celkovou ztrátu proto definuješ jako součet ztráty pro abecedu a ztráty pro znak.

Toto cvičení je součástí kurzu

Intermediate Deep Learning with PyTorch

Zobrazit kurz

Pokyny k cvičení

  • Vypočítej ztrátu klasifikace abecedy a přiřaď ji do proměnné loss_alpha.
  • Vypočítej ztrátu klasifikace znaku a přiřaď ji do proměnné loss_char.
  • Vypočítej celkovou ztrátu jako součet obou dílčích ztrát a přiřaď ji do proměnné loss.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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()
Upravit a spustit kód