IniziaInizia gratis

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

Visualizza il corso

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
        ____
Modifica ed esegui il codice