Функция потерь генератора
Прежде чем приступить к обучению 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