ComeçarComece gratuitamente

Treinamento de modelos de várias saídas

Ao treinar modelos com várias saídas, é fundamental garantir que a função de perda seja definida corretamente.

Nesse caso, o modelo produz dois resultados: previsões para o alfabeto e o caractere. Para cada um deles, existem rótulos de verdadeiros correspondentes, o que permitirá calcular duas perdas separadas: uma incorrida a partir de classificações incorretas de alfabetos e a outra a partir de classificações incorretas de caracteres. Como em ambos os casos você está lidando com uma tarefa de classificação com vários rótulos, a perda de entropia cruzada pode ser aplicada todas as vezes.

No entanto, a descida de gradiente pode otimizar apenas uma função de perda. Assim, você definirá a perda total como a soma das perdas de alfabeto e de caracteres.

Este exercício faz parte do curso

Aprendizagem profunda intermediária com PyTorch

Ver Curso

Instruções de exercício

  • Calcule a perda de classificação do alfabeto e atribua-a a loss_alpha.
  • Calcule a perda de classificação de caracteres e atribua-a a loss_char.
  • Calcule a perda total como a soma das duas perdas parciais e atribua-a a loss.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

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()
Editar e executar código