LoslegenKostenlos loslegen

Faltungsdiskriminator

Nachdem der Generator für DCGAN fertig ist, musst du nur noch den Faltungsdiskriminator definieren, bevor du mit dem Training loslegen kannst.

torch.nn wird für dich unter dem üblichen Alias importiert. Um den Faltungsdiskriminator zu erstellen, verwendest du eine benutzerdefinierte Funktion „ gc_disc_block() “, die einen Block einer Faltung gefolgt von einer Batch-Normierung und der Leaky-ReLU-Aktivierung zurückgibt. Du kannst die Definition von „ dc_disc_block() “ unten nachschlagen.

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 Diskriminatorblock mit der benutzerdefinierten Funktion „ dc_disc_block() “ hinzu, mit den Eingabe-Feature-Maps „ 3 “ und den Ausgabe-Feature-Maps „ 512 “.
  • Füge die Faltungsschicht mit der Ausgabegröße „ 1 “ hinzu.
  • In der Methode „ forward() “ gibst du die Eingabe durch den sequenziellen Block weiter, 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