Bắt đầu ngayBắt đầu miễn phí

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 generator
  • disc, mô hình discriminator
  • num_images, số lượng ảnh trong một batch
  • z_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

Xem khóa học

Hướng dẫn bài tập

  • Tạo nhiễu ngẫu nhiên có shape num_images x z_dim và gán vào noise.
  • Dùng generator để sinh ảnh giả từ noise và gán vào fake.
  • 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 criterion trê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
Chỉnh sửa và Chạy Mã