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
____