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
Anleitung zur Übung
- Füge dem Modell den letzten Discriminator-Block mit der passenden Eingabegröße und einer Ausgabe von
256hinzu. - Füge nach dem letzten Discriminator-Block eine lineare Schicht hinzu, die die Ausgabe auf die Größe
1abbildet. - 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
____