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
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()