Generátor
Generátor sítě GAN přijímá na vstupu náhodný šumový vektor a produkuje vygenerovaný obrázek. Aby byla jeho architektura co nejznovupoužitelnější, předáš jak vstupní, tak výstupní tvar jako parametry modelu. Díky tomu budeš moci stejný model použít s různými velikostmi vstupního šumu i obrázků různých rozměrů.
torch.nn je již naimportovaný jako nn. Máš k dispozici také vlastní funkci gen_block(), která vrací blok skládající se z: lineární vrstvy, batch normalizace a aktivační funkce ReLU. Použiješ ji jako stavební prvek generátoru.
def gen_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.BatchNorm1d(out_dim),
nn.ReLU(inplace=True)
)
Toto cvičení je součástí kurzu
Deep Learning pro obrázky s PyTorchem
Pokyny k cvičení
- Definuj
self.generatorjako sekvenční model. - Za poslední
gen_blockpřidej lineární vrstvu s odpovídající velikostí vstupu a výstupní velikostíout_dim. - Za lineární vrstvu přidej sigmoidovou aktivaci.
- V metodě
forward()předej vstup modelu přesself.generator.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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 ____