Discriminatore
Definito il generatore, il passo successivo per costruire una GAN è implementare il discriminatore. Prende come input l'output del generatore e produce una previsione binaria: l'input è generato o reale?
Troverai torch.nn già importato come nn. Puoi anche usare una funzione personalizzata disc_block() che restituisce un blocco composto da uno strato lineare seguito da un'attivazione LeakyReLU. Lo userai come mattoncino per costruire il discriminatore.
def disc_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.LeakyReLU(0.2)
)
Questo esercizio fa parte del corso
Deep Learning per Immagini con PyTorch
Istruzioni dell'esercizio
- Aggiungi l'ultimo blocco del discriminatore al modello, con la dimensione di input appropriata e un output di
256. - Dopo l'ultimo blocco del discriminatore, aggiungi uno strato lineare per mappare l'output alla dimensione
1. - Definisci il metodo
forward()per far passare l'immagine di input attraverso il blocco sequenziale definito in__init__().
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
class Discriminator(nn.Module):
def __init__(self, im_dim):
super(Discriminator, self).__init__()
self.disc = nn.Sequential(
disc_block(im_dim, 1024),
disc_block(1024, 512),
# Define last discriminator block
____,
# Add a linear layer
____,
)
def forward(self, x):
# Define the forward method
____