Diskriminator
Nachdem der Generator klar ist, kommt als nächster Schritt beim Aufbau eines GAN der Diskriminator dran. Es nimmt die Ausgabe des Generators als Input und macht eine binäre Vorhersage: Ist der Input generiert oder echt?
Du findest „ torch.nn “ bereits importiert unter „ nn “. Du kannst auch auf eine benutzerdefinierte Funktion „ disc_block() “ zugreifen, die einen Block einer linearen Schicht gefolgt von einer LeakyReLU-Aktivierung zurückgibt. Du wirst es als Baustein für den Diskriminator verwenden.
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
Anleitung zur Übung
- Füge den letzten Diskriminatorblock zum Modell hinzu, mit der richtigen Eingabegröße und der Ausgabe „
256“. - Nach dem letzten Diskriminatorblock füge eine lineare Schicht hinzu, um die Ausgabe auf die Größe von „
1“ abzubilden. - Definiere die Methode „
forward()“, um das Eingabebild durch den sequenziellen Block zu leiten, der in „__init__()“ definiert ist.
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
____