Comece agoraComece grátis

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 exercicio faz parte do curso

Deep Learning para Imagens com PyTorch

Ver curso

Instruções do exercicio

  • 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.

exercicio interativo prático

Tente este exercicio 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 Código