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_opt và gen_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() và 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
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àod_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àog_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