Aan de slagGa gratis aan de slag

Convolutionele discriminator

Nu de generator van de DCGAN klaar is, is de laatste stap voordat je kunt gaan trainen het definiëren van de convolutionele discriminator.

torch.nn is al voor je geïmporteerd onder de gebruikelijke alias. Om de convolutionele discriminator te bouwen, gebruik je een aangepaste functie gc_disc_block() die een blok teruggeeft van een convolutie gevolgd door batch-normalisatie en de leaky ReLU-activatie. Hieronder kun je de definitie van dc_disc_block() bekijken.

def dc_disc_block(in_dim, out_dim, kernel_size, stride):
    return nn.Sequential(
        nn.Conv2d(in_dim, out_dim, kernel_size, stride=stride),
        nn.BatchNorm2d(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 eerste discriminatorblok toe met de aangepaste functie dc_disc_block() met 3 invoerfeaturemaps en 512 uitvoerfeaturemaps.
  • Voeg de convolutionele laag toe met een uitvoergrootte van 1.
  • Laat in de forward()-methode de invoer door het sequentiële blok gaan dat je in __init__() hebt gedefinieerd.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

class DCDiscriminator(nn.Module):
    def __init__(self, kernel_size=4, stride=2):
        super(DCDiscriminator, self).__init__()
        self.disc = nn.Sequential(
          	# Add first discriminator block
            dc_disc_block(3, 512, kernel_size, stride),
            dc_disc_block(512, 1024, kernel_size, stride),
          	# Add a convolution
            nn.Conv2d(1024, 1, kernel_size, stride=stride),
        )

    def forward(self, x):
        # Pass input through sequential block
        x = ____
        return x.view(len(x), -1)
Code bewerken en uitvoeren