Kom igångKom igång gratis

Generator

En GAN-generator tar en slumpmässig brusvektor som indata och producerar en genererad bild. För att göra arkitekturen mer återanvändbar skickar du in- och utdataformerna som parametrar till modellen. På så sätt kan du använda samma modell med olika storlekar på indatabrus och bilder av varierande format.

Du hittar torch.nn redan importerat som nn. Du har även tillgång till en anpassad funktion, gen_block(), som returnerar ett block bestående av: ett linjärt lager, batchnormalisering och ReLU-aktivering. Du kommer att använda den som byggblock för generatorn.

def gen_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.BatchNorm1d(out_dim),
        nn.ReLU(inplace=True)
    )

Den här övningen är en del av kursen

Djupinlärning för bilder med PyTorch

Visa kurs

Övningsinstruktioner

  • Definiera self.generator som en sekventiell modell.
  • Lägg till ett linjärt lager med lämplig indatastorlek och utdatastorleken out_dim efter det sista gen_block.
  • Lägg till en sigmoid-aktivering efter det linjära lagret.
  • I metoden forward() skickar du modellens indata genom self.generator.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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