Обучение модели GAN
Команда PyBooks добилась хороших результатов в создании генератора текста на основе генеративно-состязательной сети (GAN). Вы уже успешно определили архитектуры генератора и дискриминатора. Теперь пришло время их обучить. Завершающий шаг — сгенерировать искусственные данные и сравнить их с реальными, чтобы оценить, насколько хорошо GAN справился с задачей. В качестве входных данных используются тензоры, а выходные данные должны воспроизводить их структуру. Команда PyBooks сможет применять эти синтетические данные для анализа текста, поскольку зависимости между признаками будут соответствовать реальным текстовым данным.
Генератор и дискриминатор уже инициализированы и сохранены в переменных generator и discriminator соответственно.
В упражнении инициализированы следующие переменные:
seq_length = 5: длина каждой синтетической последовательности данныхnum_sequences = 100: общее количество сгенерированных последовательностейnum_epochs = 50: количество полных проходов по набору данныхprint_every = 10: частота вывода результатов — каждые 10 эпох
Это упражнение является частью курса
Глубокое обучение для работы с текстом на PyTorch
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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()