Zacznij terazZacznij za darmo

Generator

Generator sieci GAN przyjmuje na wejściu losowy wektor szumu i tworzy wygenerowany obraz. Aby architektura była bardziej elastyczna, rozmiary wejścia i wyjścia przekazywane są jako parametry modelu. Dzięki temu możesz używać tego samego modelu z różnymi rozmiarami szumu wejściowego i obrazami o różnych kształtach.

torch.nn jest już zaimportowany jako nn. Masz również dostęp do niestandardowej funkcji gen_block(), która zwraca blok złożony z: warstwy liniowej, normalizacji wsadowej (batch norm) i aktywacji ReLU. Użyjesz go jako cegiełki budującej generator.

def gen_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.BatchNorm1d(out_dim),
        nn.ReLU(inplace=True)
    )

To ćwiczenie jest częścią kursu

Głębokie uczenie dla obrazów z PyTorch

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj self.generator jako model sekwencyjny.
  • Po ostatnim bloku gen_block dodaj warstwę liniową z odpowiednim rozmiarem wejścia i rozmiarem wyjścia równym out_dim.
  • Po warstwie liniowej dodaj aktywację sigmoidalną.
  • W metodzie forward() przekaż wejście modelu przez self.generator.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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 ____
Edytuj i uruchom kod