Aan de slagGa gratis aan de slag

Discriminator

Nu de generator is gedefinieerd, is de volgende stap bij het bouwen van een GAN het opzetten van de discriminator. Die neemt de uitvoer van de generator als invoer en geeft een binaire voorspelling: is de invoer gegenereerd of echt?

Je vindt torch.nn al voor je geïmporteerd als nn. Je hebt ook toegang tot een aangepaste functie disc_block() die een blok teruggeeft met een lineaire laag gevolgd door een LeakyReLU-activatie. Je gebruikt dit als bouwsteen voor de discriminator.

def disc_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.LeakyReLU(0.2)
    )

Deze oefening maakt deel uit van de cursus

Deep Learning voor afbeeldingen met PyTorch

Cursus bekijken

Oefeninstructies

  • Voeg het laatste discriminator-blok toe aan het model, met de juiste invoergrootte en een uitvoer van 256.
  • Voeg na het laatste discriminator-blok een lineaire laag toe om de uitvoer naar grootte 1 te mappen.
  • Definieer de methode forward() om de invoerafbeelding door het sequentiële blok te sturen dat in __init__() is gedefinieerd.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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
        ____
Code bewerken en uitvoeren