Generator
Een GAN-generator neemt een willekeurige ruisvector als invoer en produceert een gegenereerde afbeelding. Om de architectuur herbruikbaarder te maken, geef je zowel de invoer- als uitvoervorm als parameters door aan het model. Zo kun je hetzelfde model gebruiken met verschillende groottes van invoerruis en afbeeldingen met uiteenlopende vormen.
torch.nn is al voor je geïmporteerd als nn. Je hebt ook toegang tot een aangepaste functie gen_block() die een blok retourneert met: lineaire laag, batchnormalisatie en ReLU-activatie. Je gebruikt dit als bouwsteen voor de generator.
def gen_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.BatchNorm1d(out_dim),
nn.ReLU(inplace=True)
)
Deze oefening maakt deel uit van de cursus
Deep Learning voor afbeeldingen met PyTorch
Oefeninstructies
- Definieer
self.generatorals een sequentieel model. - Voeg na het laatste
gen_blockeen lineaire laag toe met de juiste invoergrootte en de uitvoergrootteout_dim. - Voeg na de lineaire laag een sigmoid-activatie toe.
- Geef in de
forward()-methode de invoer van het model doorself.generator.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
class Generator(nn.Module):
def __init__(self, in_dim, out_dim):
super(Generator, self).__init__()
# Define generator block
self.generator = ____(
gen_block(in_dim, 256),
gen_block(256, 512),
gen_block(512, 1024),
# Add linear layer
____
# Add activation
____
)
def forward(self, x):
# Pass input through generator
return ____