ComeçarComece de graça

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

Ver curso

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 ____
Editar e executar o código