Antrenarea modelelor cu ieșiri multiple
Când antrenezi modele cu ieșiri multiple, este esențial să te asiguri că funcția de pierdere este definită corect.
În acest caz, modelul produce două ieșiri: predicții pentru alfabet și pentru caracter. Pentru fiecare dintre acestea există etichete de referință corespunzătoare, care îți permit să calculezi două pierderi separate: una rezultată din clasificările incorecte ale alfabetului și cealaltă din clasificările incorecte ale caracterului. Deoarece în ambele cazuri ai de-a face cu o sarcină de clasificare multi-clasă, poți aplica de fiecare dată pierderea Cross-Entropy.
Totuși, coborârea pe gradient poate optimiza o singură funcție de pierdere. Prin urmare, vei defini pierderea totală ca sumă a pierderilor pentru alfabet și pentru caracter.
Acest exercițiu face parte din cursul
Deep Learning intermediar cu PyTorch
Instrucțiuni pentru exercițiu
- Calculează pierderea de clasificare pentru alfabet și atribuie-o variabilei
loss_alpha. - Calculează pierderea de clasificare pentru caracter și atribuie-o variabilei
loss_char. - Calculează pierderea totală ca sumă a celor două pierderi parțiale și atribuie-o variabilei
loss.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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()