LoslegenKostenlos loslegen

Generator

Ein GAN-Generator nimmt einen Zufallsrauschvektor als Eingabe und erzeugt ein generiertes Bild. Damit die Architektur wiederverwendbar ist, übergibst du sowohl Eingabe- als auch Ausgabedimensionen als Parameter an das Modell. So kannst du dasselbe Modell mit unterschiedlich großen Eingaberauschvektoren und Bildern verschiedener Formen nutzen.

torch.nn ist bereits für dich als nn importiert. Außerdem steht dir eine benutzerdefinierte Funktion gen_block() zur Verfügung, die einen Block aus linearer Schicht, Batch-Norm und ReLU-Aktivierung zurückgibt. Du verwendest sie als Baustein für den 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)
    )

Diese Übung ist Teil des Kurses

Deep Learning für Bilder mit PyTorch

Kurs anzeigen

Anleitung zur Übung

  • Definiere self.generator als sequentielles Modell.
  • Füge nach dem letzten gen_block eine lineare Schicht mit der passenden Eingabedimension und der Ausgabedimension out_dim hinzu.
  • Füge nach der linearen Schicht eine Sigmoid-Aktivierung hinzu.
  • Übergib im forward()-Modul die Eingabe des Modells durch self.generator.

Interaktive Übung

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

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