Kom igångKom igång gratis

Träna modeller med flera utdata

När man tränar modeller med flera utdata är det viktigt att förlustfunktionen definieras korrekt.

I det här fallet producerar modellen två utdata: prediktioner för alfabetet och för tecknet. För var och en av dessa finns motsvarande sanna etiketter, vilket gör det möjligt att beräkna två separata förluster: en för felaktiga alfabetsklassificeringar och en för felaktiga teckenklassificeringar. Eftersom båda fallen handlar om en klassificeringsuppgift med flera klasser kan Cross-Entropy-förlust tillämpas i båda fallen.

Gradientnedstigning kan dock bara optimera en förlustfunktion. Därför definierar du den totala förlusten som summan av alfabets- och teckenförlusterna.

Den här övningen är en del av kursen

Fördjupad djupinlärning med PyTorch

Visa kurs

Övningsinstruktioner

  • Beräkna förlusten för alfabetsklassificeringen och tilldela den till loss_alpha.
  • Beräkna förlusten för teckenklassificeringen och tilldela den till loss_char.
  • Beräkna den totala förlusten som summan av de två delförlusterna och tilldela den till loss.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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()
Redigera och kör kod