Generatorverlies
Voordat je je GAN kunt trainen, moet je verliesfuncties definiëren voor zowel de generator als de discriminator. Je begint met de eerste.
Onthoud dat het doel van de generator is om zulke nepafbeeldingen te maken dat de discriminator ze als echt classificeert. Daarom krijgt de generator verlies als de door hem gegenereerde afbeeldingen door de discriminator als nep (label 0) worden geclassificeerd.
Definieer de functie gen_loss() die het verlies van de generator berekent. Deze neemt vier argumenten:
gen, het generatormodeldisc, het discriminatormodelnum_images, het aantal afbeeldingen in de batchz_dim, de grootte van de invoer-ruis
Deze oefening maakt deel uit van de cursus
Deep Learning voor afbeeldingen met PyTorch
Oefeninstructies
- Genereer willekeurige ruis met vorm
num_imagesbijz_dimen wijs dit toe aannoise. - Gebruik de generator om van
noiseeen nepafbeelding te genereren en wijs dit toe aanfake. - Haal de voorspelling van de discriminator op voor de gegenereerde nepafbeelding.
- Bereken het verlies van de generator door
criterionaan te roepen op de voorspellingen van de discriminator en een tensor van enen met dezelfde vorm.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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