LoslegenKostenlos loslegen

Konvolutionaler Discriminator

Nachdem der Generator des DCGAN bereit ist, besteht der letzte Schritt vor dem Training darin, den konvolutionalen Discriminator zu definieren.

torch.nn ist bereits unter dem üblichen Alias importiert. Für den konvolutionalen Discriminator verwendest du eine benutzerdefinierte Funktion gc_disc_block(), die einen Block aus einer Convolution gefolgt von einer Batch-Norm und der Leaky-ReLU-Aktivierung zurückgibt. Unten kannst du die Definition von dc_disc_block() ansehen.

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),
    )

Diese Übung ist Teil des Kurses

Deep Learning für Bilder mit PyTorch

Kurs anzeigen

Anleitung zur Übung

  • Füge den ersten Discriminator-Block mit der benutzerdefinierten Funktion dc_disc_block() hinzu, mit 3 Eingangs-Feature-Maps und 512 Ausgangs-Feature-Maps.
  • Füge die Convolution-Schicht mit der Ausgabedimension 1 hinzu.
  • Übergib in der Methode forward() die Eingabe durch den sequentiellen Block, den du in __init__() definiert hast.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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 bearbeiten und ausführen