Diskriminator
Nu när generatorn är definierad är nästa steg att bygga diskriminatorn. Den tar generatorns utdata som indata och producerar en binär prediktion: är indatan genererad eller verklig?
torch.nn är redan importerat som nn. Du har också tillgång till en anpassad funktion disc_block(), som returnerar ett block bestående av ett linjärt lager följt av en LeakyReLU-aktivering. Du använder den som byggblock för diskriminatorn.
def disc_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.LeakyReLU(0.2)
)
Den här övningen är en del av kursen
Djupinlärning för bilder med PyTorch
Övningsinstruktioner
- Lägg till det sista diskriminatorblocket i modellen med rätt indatastorlek och en utdatastorlek på
256. - Efter det sista diskriminatorblocket lägger du till ett linjärt lager som mappar utdata till storleken
1. - Definiera metoden
forward()så att indatabilden skickas genom det sekventiella blocket som definierades i__init__().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
class Discriminator(nn.Module):
def __init__(self, im_dim):
super(Discriminator, self).__init__()
self.disc = nn.Sequential(
disc_block(im_dim, 1024),
disc_block(1024, 512),
# Define last discriminator block
____,
# Add a linear layer
____,
)
def forward(self, x):
# Define the forward method
____