Gerador
Um gerador de GAN recebe um vetor de ruído aleatório como entrada e produz uma imagem gerada. Para tornar sua arquitetura mais reutilizável, você vai passar as formas de entrada e de saída como parâmetros do modelo. Assim, você pode usar o mesmo modelo com diferentes tamanhos de ruído de entrada e imagens com formatos variados.
Você já encontra torch.nn importado para você como nn. Você também pode acessar uma função personalizada gen_block() que retorna um bloco composto por: camada linear, normalização em lote e ativação ReLU. Você vai usá-la como bloco de construção do gerador.
def gen_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.BatchNorm1d(out_dim),
nn.ReLU(inplace=True)
)
Este exercício faz parte do curso
Deep Learning para Imagens com PyTorch
Instruções do exercício
- Defina
self.generatorcomo um modelo sequencial. - Após o último
gen_block, adicione uma camada linear com o tamanho de entrada apropriado e tamanho de saídaout_dim. - Adicione uma ativação sigmoid após a camada linear.
- No método
forward(), passe a entrada do modelo porself.generator.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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 ____