ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Defina self.generator como um modelo sequencial.
  • Após o último gen_block, adicione uma camada linear com o tamanho de entrada apropriado e tamanho de saída out_dim.
  • Adicione uma ativação sigmoid após a camada linear.
  • No método forward(), passe a entrada do modelo por 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