Huấn luyện mô hình đa đầu ra
Khi huấn luyện các mô hình có nhiều đầu ra, điều quan trọng là phải định nghĩa đúng hàm mất mát.
Trong trường hợp này, mô hình tạo ra hai đầu ra: dự đoán cho bảng chữ cái và cho ký tự. Với mỗi đầu ra, có nhãn ground truth tương ứng, cho phép bạn tính hai mất mát riêng biệt: một do phân loại bảng chữ cái sai và một do phân loại ký tự sai. Vì cả hai đều là bài toán phân loại đa lớp, bạn có thể áp dụng mất mát Cross-Entropy cho từng cái.
Tuy nhiên, gradient descent chỉ có thể tối ưu một hàm mất mát. Do đó, bạn sẽ định nghĩa tổng mất mát là tổng của mất mát bảng chữ cái và mất mát ký tự.
Bài tập này là một phần của khóa học
Deep Learning nâng cao với PyTorch
Hướng dẫn bài tập
- Tính mất mát phân loại bảng chữ cái và gán vào
loss_alpha. - Tính mất mát phân loại ký tự và gán vào
loss_char. - Tính tổng mất mát bằng tổng của hai mất mát thành phần và gán vào
loss.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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()