Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Definieer self.generator als een sequentieel model.
  • Voeg na het laatste gen_block een lineaire laag toe met de juiste invoergrootte en de uitvoergrootte out_dim.
  • Voeg na de lineaire laag een sigmoid-activatie toe.
  • Geef in de forward()-methode de invoer van het model door self.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 ____
Code bewerken en uitvoeren