НачатьНачать бесплатно

Обучение модели 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()
Редактировать и запускать код