Convolutionele discriminator
Nu de generator van de DCGAN klaar is, is de laatste stap voordat je kunt gaan trainen het definiëren van de convolutionele discriminator.
torch.nn is al voor je geïmporteerd onder de gebruikelijke alias. Om de convolutionele discriminator te bouwen, gebruik je een aangepaste functie gc_disc_block() die een blok teruggeeft van een convolutie gevolgd door batch-normalisatie en de leaky ReLU-activatie. Hieronder kun je de definitie van dc_disc_block() bekijken.
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),
)
Deze oefening maakt deel uit van de cursus
Deep Learning voor afbeeldingen met PyTorch
Oefeninstructies
- Voeg het eerste discriminatorblok toe met de aangepaste functie
dc_disc_block()met3invoerfeaturemaps en512uitvoerfeaturemaps. - Voeg de convolutionele laag toe met een uitvoergrootte van
1. - Laat in de
forward()-methode de invoer door het sequentiële blok gaan dat je in__init__()hebt gedefinieerd.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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)