Hàm mất mát của generator
Trước khi huấn luyện GAN, bạn cần xác định hàm mất mát cho cả generator và discriminator. Bạn sẽ bắt đầu với generator.
Hãy nhớ rằng nhiệm vụ của generator là tạo ra ảnh giả đủ thuyết phục để đánh lừa discriminator phân loại chúng là ảnh thật. Vì vậy, generator sẽ chịu mất mát nếu các ảnh nó tạo ra bị discriminator phân loại là giả (nhãn 0).
Hãy định nghĩa hàm gen_loss() để tính mất mát của generator. Hàm nhận bốn đối số:
gen, mô hình generatordisc, mô hình discriminatornum_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
- Tạo nhiễu ngẫu nhiên có shape
num_imagesxz_dimvà gán vàonoise. - Dùng generator để sinh ảnh giả từ
noisevà gán vàofake. - Lấy dự đoán của discriminator cho ảnh giả đã sinh.
- Tính mất mát của generator bằng cách gọi
criteriontrên dự đoán của discriminator 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 gen_loss(gen, disc, criterion, num_images, z_dim):
# Define random noise
noise = ____(num_images, z_dim)
# Generate fake image
fake = ____
# Get discriminator's prediction on the fake image
disc_pred = ____
# Compute generator loss
criterion = nn.BCEWithLogitsLoss()
gen_loss = ____(____, ____)
return gen_loss