Kom igångKom igång gratis

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

Visa kurs

Ö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
        ____
Redigera och kör kod