Gerador
Um gerador GAN pega um vetor de ruído aleatório como entrada e cria uma imagem. Para deixar a arquitetura mais reutilizável, você vai passar as formas de entrada e saída como parâmetros para o modelo. Assim, você pode usar o mesmo modelo com diferentes tamanhos de ruído de entrada e imagens de formas variadas.
Você vai encontrar torch.nn
já importado como nn
. Você também pode acessar uma função personalizada gen_block()
que retorna um bloco de: camada linear, norma de lote e ativação ReLU. Você vai usar isso como um bloco de construção para o 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
Aprendizado profundo para imagens com PyTorch
Instruções do exercício
- Defina “
self.generator
” como um modelo sequencial. - Depois do último “
gen_block
”, adicione uma camada linear com o tamanho de entrada certo e o tamanho de saída de “out_dim
”. - Adicione uma ativação sigmoide depois da camada linear.
- No método `
forward()
, passa a entrada do modelo através de
self.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 ____