Entrenamiento de modelos multisalida
Al entrenar modelos con múltiples salidas, es crucial asegurarse de que la función de pérdida se define correctamente.
En este caso, el modelo produce dos salidas: predicciones para el alfabeto y para el carácter. Para cada una de ellas, existen las correspondientes etiquetas de verdad fundamental, que te permitirán calcular dos pérdidas distintas: una derivada de la clasificación incorrecta de alfabetos, y otra de la clasificación incorrecta de caracteres. Como en ambos casos se trata de una tarea de clasificación multietiqueta, se puede aplicar cada vez la pérdida de entropía cruzada.
Sin embargo, el descenso gradiente solo puede optimizar una función de pérdida. Por tanto, definirás la pérdida total como la suma de las pérdidas del alfabeto y de los caracteres.
Este ejercicio forma parte del curso
Aprendizaje profundo intermedio con PyTorch
Instrucciones de ejercicio
- Calcula la pérdida de clasificación del alfabeto y asígnala a
loss_alpha
. - Calcula la pérdida de clasificación de caracteres y asígnala a
loss_char
. - Calcula la pérdida total como la suma de las dos pérdidas parciales y asígnala a
loss
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
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()