ComeçarComece de graça

Gerador Convolucional

Defina um gerador convolucional seguindo as diretrizes de DCGAN discutidas no último vídeo.

torch.nn já foi importado como nn para sua conveniência. Além disso, uma função personalizada dc_gen_block() está disponível, que retorna um bloco com uma convolução transposta, batch norm e ativação ReLU. Essa função serve como base para construir o gerador convolucional. Você pode se familiarizar com a definição de dc_gen_block() abaixo.

def dc_gen_block(in_dim, out_dim, kernel_size, stride):
    return nn.Sequential(
        nn.ConvTranspose2d(in_dim, out_dim, kernel_size, stride=stride),
        nn.BatchNorm2d(out_dim),
        nn.ReLU()
    )

Este exercício faz parte do curso

Deep Learning para Imagens com PyTorch

Ver curso

Instruções do exercício

  • Adicione o último bloco do gerador, mapeando o tamanho dos mapas de características para 256.
  • Adicione uma convolução transposta com tamanho de saída 3.
  • Adicione a ativação tanh.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

class DCGenerator(nn.Module):
    def __init__(self, in_dim, kernel_size=4, stride=2):
        super(DCGenerator, self).__init__()
        self.in_dim = in_dim
        self.gen = nn.Sequential(
            dc_gen_block(in_dim, 1024, kernel_size, stride),
            dc_gen_block(1024, 512, kernel_size, stride),
            # Add last generator block
            ____,
            # Add transposed convolution
            ____(____, ____, kernel_size, stride=stride),
            # Add tanh activation
            ____
        )

    def forward(self, x):
        x = x.view(len(x), self.in_dim, 1, 1)
        return self.gen(x)
Editar e executar o código