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
Instrukcje do ćwiczenia
- Zdefiniuj
self.generatorjako model sekwencyjny. - Po ostatnim bloku
gen_blockdodaj warstwę liniową z odpowiednim rozmiarem wejścia i rozmiarem wyjścia równymout_dim. - Po warstwie liniowej dodaj aktywację sigmoidalną.
- W metodzie
forward()przekaż wejście modelu przezself.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 ____