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

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 generator
  • disc: mô hình discriminator
  • real: một mẫu ảnh thật từ dữ liệu huấn luyện
  • 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

  • Dùng discriminator để phân loại ảnh fake và gán dự đoán vào disc_pred_fake.
  • Tính thành phần mất mát cho ảnh giả bằng cách gọi criterion trê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 real và gán dự đoán vào disc_pred_real.
  • Tính thành phần mất mát cho ảnh thật bằng cách gọi criterion trê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
Chỉnh sửa và Chạy Mã