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
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
1te 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
____