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
Övningsinstruktioner
- Definiera
self.generatorsom en sekventiell modell. - Lägg till ett linjärt lager med lämplig indatastorlek och utdatastorleken
out_dimefter det sistagen_block. - Lägg till en sigmoid-aktivering efter det linjära lagret.
- I metoden
forward()skickar du modellens indata genomself.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 ____