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 ____