Faltungsdiskriminator
Nachdem der Generator für DCGAN fertig ist, musst du nur noch den Faltungsdiskriminator definieren, bevor du mit dem Training loslegen kannst.
torch.nn
wird für dich unter dem üblichen Alias importiert. Um den Faltungsdiskriminator zu erstellen, verwendest du eine benutzerdefinierte Funktion „ gc_disc_block()
“, die einen Block einer Faltung gefolgt von einer Batch-Normierung und der Leaky-ReLU-Aktivierung zurückgibt. Du kannst die Definition von „ dc_disc_block()
“ unten nachschlagen.
def dc_disc_block(in_dim, out_dim, kernel_size, stride):
return nn.Sequential(
nn.Conv2d(in_dim, out_dim, kernel_size, stride=stride),
nn.BatchNorm2d(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 ersten Diskriminatorblock mit der benutzerdefinierten Funktion „
dc_disc_block()
“ hinzu, mit den Eingabe-Feature-Maps „3
“ und den Ausgabe-Feature-Maps „512
“. - Füge die Faltungsschicht mit der Ausgabegröße „
1
“ hinzu. - In der Methode „
forward()
“ gibst du die Eingabe durch den sequenziellen Block weiter, den du in „__init__()
“ definiert hast.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
class DCDiscriminator(nn.Module):
def __init__(self, kernel_size=4, stride=2):
super(DCDiscriminator, self).__init__()
self.disc = nn.Sequential(
# Add first discriminator block
dc_disc_block(3, 512, kernel_size, stride),
dc_disc_block(512, 1024, kernel_size, stride),
# Add a convolution
nn.Conv2d(1024, 1, kernel_size, stride=stride),
)
def forward(self, x):
# Pass input through sequential block
x = ____
return x.view(len(x), -1)