Generatorns förlust
Innan du kan träna ditt GAN behöver du definiera förlustfunktioner för både generatorn och diskriminatorn. Du börjar med den förstnämnda.
Kom ihåg att generatorns uppgift är att producera falska bilder som lurar diskriminatorn att klassificera dem som äkta. Generatorn får därför en förlust om de bilder den genererat klassificeras av diskriminatorn som falska (etikett 0).
Definiera funktionen gen_loss() som beräknar generatorns förlust. Den tar fyra argument:
gen, generatormodellendisc, diskriminatormodellennum_images, antalet bilder i batchenz_dim, storleken på det slumpmässiga indatabrusvet
Den här övningen är en del av kursen
Djupinlärning för bilder med PyTorch
Övningsinstruktioner
- Generera slumpmässigt brus med formen
num_imagesgångerz_dimoch tilldela det tillnoise. - Använd generatorn för att generera en falsk bild från
noiseoch tilldela den tillfake. - Hämta diskriminatorns prediktion för den genererade falska bilden.
- Beräkna generatorns förlust genom att anropa
criterionmed diskriminatorns prediktioner och en tensor med ettor av samma form.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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