Втрата генератора
Перш ніж тренувати вашу 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