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

Функция потерь генератора

Прежде чем приступить к обучению 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
Редактировать и запускать код