LoslegenKostenlos loslegen

Discriminator

Nachdem der Generator definiert ist, besteht der nächste Schritt beim Aufbau eines GAN darin, den Discriminator zu konstruieren. Er nimmt die Ausgabe des Generators als Eingabe und erzeugt eine binäre Vorhersage: Ist die Eingabe generiert oder real?

torch.nn ist bereits für dich als nn importiert. Außerdem steht dir eine benutzerdefinierte Funktion disc_block() zur Verfügung, die einen Block aus einer linearen Schicht gefolgt von einer LeakyReLU-Aktivierung zurückgibt. Du verwendest sie als Baustein für den Discriminator.

def disc_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, 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 dem Modell den letzten Discriminator-Block mit der passenden Eingabegröße und einer Ausgabe von 256 hinzu.
  • Füge nach dem letzten Discriminator-Block eine lineare Schicht hinzu, die die Ausgabe auf die Größe 1 abbildet.
  • Definiere die Methode forward(), um das Eingabebild durch den in __init__() definierten sequentiellen Block zu leiten.

Interaktive Übung

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

class Discriminator(nn.Module):
    def __init__(self, im_dim):
        super(Discriminator, self).__init__()
        self.disc = nn.Sequential(
            disc_block(im_dim, 1024),
            disc_block(1024, 512),
            # Define last discriminator block
            ____,
            # Add a linear layer
            ____,
        )

    def forward(self, x):
        # Define the forward method
        ____
Code bearbeiten und ausführen