Generator
Ein GAN-Generator nimmt einen zufälligen Rauschvektor als Input und macht daraus ein generiertes Bild. Damit die Architektur besser wiederverwendet werden kann, gibst du sowohl die Eingabe- als auch die Ausgabeformen als Parameter an das Modell weiter. So kannst du dasselbe Modell mit unterschiedlichen Eingangsrauschen und Bildern in verschiedenen Formen verwenden.
Du findest „ torch.nn “ bereits importiert unter „ nn “. Du kannst auch auf eine benutzerdefinierte Funktion „ gen_block() “ zugreifen, die einen Block mit linearer Schicht, Batch-Normalisierung und ReLU-Aktivierung zurückgibt. Du wirst es als Baustein für den Generator verwenden.
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
- Definier „
self.generator“ als sequentielles Modell. - Füge nach dem letzten „
gen_block“ eine lineare Schicht mit der passenden Eingangsgröße und der Ausgangsgröße „out_dim“ hinzu. - Füge nach der linearen Schicht eine sigmoidale Aktivierung hinzu.
- In der Methode „
forward()“ gibst du die Eingabe des Modells über „self.generator“ weiter.
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 ____