Hàm mất mát của Discriminator
Đến lúc định nghĩa hàm mất mát cho discriminator. Hãy nhớ rằng nhiệm vụ của discriminator là phân loại ảnh là thật hay giả. Vì vậy, discriminator sẽ chịu mất mát nếu nó phân loại đầu ra của generator là thật (nhãn 1) hoặc phân loại ảnh thật là giả (nhãn 0).
Hãy định nghĩa hàm disc_loss() để tính mất mát của discriminator. Hàm nhận năm đối số:
gen: mô hình generatordisc: mô hình discriminatorreal: một mẫu ảnh thật từ dữ liệu huấn luyệnnum_images: số lượng ảnh trong một batchz_dim: kích thước của nhiễu ngẫu nhiên đầu vào
Bài tập này là một phần của khóa học
Deep Learning cho Ảnh với PyTorch
Hướng dẫn bài tập
- Dùng discriminator để phân loại ảnh
fakevà gán dự đoán vàodisc_pred_fake. - Tính thành phần mất mát cho ảnh giả bằng cách gọi
criteriontrên dự đoán của discriminator cho ảnh giả và một tensor toàn số 0 có cùng shape. - Dùng discriminator để phân loại ảnh
realvà gán dự đoán vàodisc_pred_real. - Tính thành phần mất mát cho ảnh thật bằng cách gọi
criteriontrên dự đoán của discriminator cho ảnh thật và một tensor toàn số 1 có cùng shape.
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.
def disc_loss(gen, disc, real, num_images, z_dim):
criterion = nn.BCEWithLogitsLoss()
noise = torch.randn(num_images, z_dim)
fake = gen(noise)
# Get discriminator's predictions for fake images
disc_pred_fake = ____
# Calculate the fake loss component
fake_loss = ____
# Get discriminator's predictions for real images
disc_pred_real = ____
# Calculate the real loss component
real_loss = ____
disc_loss = (real_loss + fake_loss) / 2
return disc_loss