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
Anleitung zur Übung
- Definiere
self.generatorals sequentielles Modell. - Füge nach dem letzten
gen_blockeine lineare Schicht mit der passenden Eingabedimension und der Ausgabedimensionout_dimhinzu. - Füge nach der linearen Schicht eine Sigmoid-Aktivierung hinzu.
- Übergib im
forward()-Modul die Eingabe des Modells durchself.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 ____