Aan de slagGa gratis aan de slag

Multi-outputmodellen trainen

Bij het trainen van modellen met meerdere outputs is het cruciaal om de verliesfunctie correct te definiëren.

In dit geval produceert het model twee outputs: voorspellingen voor het alfabet en voor het teken. Voor elk daarvan zijn er bijbehorende ground-truthlabels, waarmee je twee afzonderlijke verliezen kunt berekenen: één door foute alfabetclassificaties en één door foute tekenclassificatie. Omdat het in beide gevallen om een multi-labelclassificatie gaat, kun je telkens de Cross-Entropy-verliesfunctie toepassen.

Gradient descent kan echter maar één verliesfunctie optimaliseren. Daarom definieer je het totale verlies als de som van het alfabet- en tekenverlies.

Deze oefening maakt deel uit van de cursus

Gevorderde Deep Learning met PyTorch

Cursus bekijken

Oefeninstructies

  • Bereken het verlies voor de alfabetclassificatie en wijs dit toe aan loss_alpha.
  • Bereken het verlies voor de tekenclassificatie en wijs dit toe aan loss_char.
  • Bereken het totale verlies als de som van de twee deelverliezen en wijs dit toe aan loss.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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()
Code bewerken en uitvoeren