Huấn luyện mô hình GAN
Đội của bạn tại PyBooks đã đạt tiến bộ tốt trong việc xây dựng bộ sinh văn bản bằng Generative Adversarial Network (GAN). Bạn đã định nghĩa thành công mạng generator và discriminator. Giờ là lúc huấn luyện chúng. Bước cuối là tạo một số dữ liệu giả và so sánh với dữ liệu thật để xem GAN của bạn học tốt đến đâu. Chúng ta đã dùng các tensor làm đầu vào và đầu ra sẽ cố gắng giống với các tensor đầu vào. Nhóm tại PyBooks sau đó có thể dùng dữ liệu tổng hợp này cho phân tích văn bản vì các đặc trưng sẽ có mối quan hệ giống như dữ liệu văn bản.
Generator và discriminator đã được khởi tạo và lưu lần lượt vào generator và discriminator.
Các biến sau đã được khởi tạo trong bài tập:
seq_length = 5: Độ dài của mỗi chuỗi dữ liệu tổng hợpnum_sequences = 100: Tổng số chuỗi được tạo ranum_epochs = 50: Số vòng lặp qua toàn bộ tập dữ liệuprint_every = 10: Tần suất hiển thị kết quả, in sau mỗi 10 epoch
Bài tập này là một phần của khóa học
Deep Learning cho Văn bản với PyTorch
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.
# Define the loss function and optimizer
criterion = nn.____()
optimizer_gen = ____(generator.parameters(), lr=0.001)
optimizer_disc = ____(discriminator.parameters(), lr=0.001)
for epoch in range(num_epochs):
for real_data in data:
# Unsqueezing real_data and prevent gradient recalculations
real_data = real_data.____(0)
noise = torch.rand((1, seq_length))
fake_data = generator(noise)
disc_real = discriminator(real_data)
disc_fake = discriminator(fake_data.____())
loss_disc = criterion(disc_real, torch.ones_like(disc_real)) + criterion(disc_fake, torch.zeros_like(disc_fake))
optimizer_disc.zero_grad()
loss_disc.backward()
optimizer_disc.step()