Pierderea generatorului
Înainte de a putea antrena GAN-ul, trebuie să definești funcții de pierdere atât pentru generator, cât și pentru discriminator. Vei începe cu primul.
Amintește-ți că rolul generatorului este să producă imagini false care să îl păcălească pe discriminator să le clasifice drept reale. Prin urmare, generatorul înregistrează o pierdere dacă imaginile pe care le-a generat sunt clasificate de discriminator ca false (eticheta 0).
Definește funcția gen_loss(), care calculează pierderea generatorului. Aceasta primește patru argumente:
gen, modelul generatordisc, modelul discriminatornum_images, numărul de imagini din lotz_dim, dimensiunea zgomotului aleatoriu de intrare
Acest exercițiu face parte din cursul
Deep Learning pentru imagini cu PyTorch
Instrucțiuni pentru exercițiu
- Generează zgomot aleatoriu cu forma
num_imagespez_dimși atribuie-l variabileinoise. - Folosește generatorul pentru a crea o imagine falsă din
noiseși atribuie-o variabileifake. - Obține predicția discriminatorului pentru imaginea falsă generată.
- Calculează pierderea generatorului apelând
criterioncu predicțiile discriminatorului și un tensor de unu cu aceeași formă.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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