ПочатиПочніть безкоштовно

Втрата генератора

Перш ніж тренувати вашу GAN, потрібно визначити функції втрат і для генератора, і для дискримінатора. Почнімо з першого.

Нагадаємо: завдання генератора — створювати такі фейкові зображення, щоб дискримінатор приймав їх за справжні. Тому генератор отримує втрату, якщо зображення, які він створив, дискримінатор класифікує як фейкові (мітка 0).

Визначте функцію gen_loss(), що обчислює втрату генератора. Вона приймає чотири аргументи:

  • gen — модель генератора
  • disc — модель дискримінатора
  • num_images — кількість зображень у батчі
  • z_dim — розмір вхідного випадкового шуму

Ця вправа є частиною курсу

Глибоке навчання для зображень із PyTorch

Переглянути курс

Інструкції до вправи

  • Згенеруйте випадковий шум форми num_images на z_dim і присвойте його змінній noise.
  • Використайте генератор, щоб згенерувати фейкове зображення для noise, і присвойте його змінній fake.
  • Отримайте прогноз дискримінатора для згенерованого фейкового зображення.
  • Обчисліть втрату генератора, викликавши criterion на прогнозах дискримінатора та тензорі з одиниць того самого розміру.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

def gen_loss(gen, disc, criterion, num_images, z_dim):
    # Define random noise
    noise = ____(num_images, z_dim)
    # Generate fake image
    fake = ____
    # Get discriminator's prediction on the fake image
    disc_pred = ____
    # Compute generator loss
    criterion = nn.BCEWithLogitsLoss()
    gen_loss = ____(____, ____)
    return gen_loss
Редагувати та запускати код