Träna modeller med flera utdata
När man tränar modeller med flera utdata är det viktigt att förlustfunktionen definieras korrekt.
I det här fallet producerar modellen två utdata: prediktioner för alfabetet och för tecknet. För var och en av dessa finns motsvarande sanna etiketter, vilket gör det möjligt att beräkna två separata förluster: en för felaktiga alfabetsklassificeringar och en för felaktiga teckenklassificeringar. Eftersom båda fallen handlar om en klassificeringsuppgift med flera klasser kan Cross-Entropy-förlust tillämpas i båda fallen.
Gradientnedstigning kan dock bara optimera en förlustfunktion. Därför definierar du den totala förlusten som summan av alfabets- och teckenförlusterna.
Den här övningen är en del av kursen
Fördjupad djupinlärning med PyTorch
Övningsinstruktioner
- Beräkna förlusten för alfabetsklassificeringen och tilldela den till
loss_alpha. - Beräkna förlusten för teckenklassificeringen och tilldela den till
loss_char. - Beräkna den totala förlusten som summan av de två delförlusterna och tilldela den till
loss.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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()