Melatih model multi-output
Saat melatih model dengan banyak keluaran, sangat penting untuk memastikan bahwa fungsi loss didefinisikan dengan benar.
Dalam kasus ini, model menghasilkan dua keluaran: prediksi untuk alfabet dan karakter. Untuk masing-masing, terdapat label ground truth yang sesuai, yang memungkinkan Anda menghitung dua loss terpisah: satu akibat kesalahan klasifikasi alfabet, dan satu lagi akibat kesalahan klasifikasi karakter. Karena pada keduanya Anda menangani tugas klasifikasi multi-label, loss Cross-Entropy dapat diterapkan setiap kali.
Namun, gradient descent hanya dapat mengoptimalkan satu fungsi loss. Oleh karena itu, Anda akan mendefinisikan total loss sebagai jumlah dari loss alfabet dan loss karakter.
Latihan ini adalah bagian dari kursus
Deep Learning Lanjutan dengan PyTorch
Petunjuk latihan
- Hitung loss klasifikasi alfabet dan simpan ke
loss_alpha. - Hitung loss klasifikasi karakter dan simpan ke
loss_char. - Hitung total loss sebagai penjumlahan dari dua loss parsial dan simpan ke
loss.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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()