IniziaInizia gratis

Addestrare modelli multi-output

Quando addestri modelli con più output, è fondamentale assicurarti che la funzione di loss sia definita correttamente.

In questo caso, il modello produce due output: le predizioni per l’alfabeto e per il carattere. Per ciascuno di questi ci sono le corrispondenti etichette ground truth, che ti permetteranno di calcolare due loss separate: una dovuta a classificazioni errate dell’alfabeto e l’altra dovuta a classificazioni errate del carattere. Poiché in entrambi i casi si tratta di un problema di classificazione multi-classe, puoi applicare la Cross-Entropy ogni volta.

Tuttavia, la discesa del gradiente può ottimizzare una sola funzione di loss. Definirai quindi la loss totale come somma della loss per l’alfabeto e di quella per il carattere.

Questo esercizio fa parte del corso

Deep Learning intermedio con PyTorch

Visualizza il corso

Istruzioni dell'esercizio

  • Calcola la loss di classificazione dell’alfabeto e assegnala a loss_alpha.
  • Calcola la loss di classificazione del carattere e assegnala a loss_char.
  • Calcola la loss totale come somma delle due loss parziali e assegnala a loss.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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()
Modifica ed esegui il codice