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

Vòng lặp huấn luyện

Cuối cùng thì mọi công sức bạn bỏ ra để định nghĩa kiến trúc mô hình và hàm loss cũng đã đến lúc phát huy: đến giờ huấn luyện rồi! Nhiệm vụ của bạn là triển khai và chạy vòng lặp huấn luyện GAN. Lưu ý: một lệnh break được đặt sau batch dữ liệu đầu tiên để tránh thời gian chạy quá lâu.

Hai bộ tối ưu disc_optgen_opt đã được khởi tạo bằng bộ tối ưu Adam(). Các hàm tính loss mà bạn đã định nghĩa trước đó, gen_loss()disc_loss(), đã sẵn sàng để dùng. Một dataloader cũng đã được chuẩn bị cho bạn.

Nhắc lại rằng:

  • Tham số của disc_loss() là: gen, disc, real, cur_batch_size, z_dim.
  • Tham số của gen_loss() là: gen, disc, cur_batch_size, z_dim.

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ính loss của discriminator dùng disc_loss() bằng cách truyền lần lượt generator, discriminator, mẫu ảnh thật, kích thước batch hiện tại, và kích thước nhiễu là 16, rồi gán kết quả vào d_loss.
  • Tính gradient từ d_loss.
  • Tính loss của generator dùng gen_loss() bằng cách truyền lần lượt generator, discriminator, kích thước batch hiện tại, và kích thước nhiễu là 16, rồi gán kết quả vào g_loss.
  • Tính gradient từ g_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.

for epoch in range(1):
    for real in dataloader:
        cur_batch_size = len(real)
        
        disc_opt.zero_grad()
        # Calculate discriminator loss
        d_loss = ____
        # Compute gradients
        ____
        disc_opt.step()

        gen_opt.zero_grad()
        # Calculate generator loss
        g_loss = ____
        # Compute generator gradients
        ____
        gen_opt.step()

        print(f"Generator loss: {g_loss}")
        print(f"Discriminator loss: {d_loss}")
        break
Chỉnh sửa và Chạy Mã