Generator
Un generator GAN primește ca intrare un vector de zgomot aleatoriu și produce o imagine generată. Pentru a face arhitectura mai reutilizabilă, vei transmite atât forma intrării, cât și forma ieșirii ca parametri ai modelului. Astfel, poți folosi același model cu dimensiuni diferite ale zgomotului de intrare și imagini de diverse forme.
Vei găsi torch.nn deja importat ca nn. Ai acces și la o funcție personalizată gen_block(), care returnează un bloc format din: strat liniar, normalizare batch și activare ReLU. O vei folosi ca element de bază al generatorului.
def gen_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.BatchNorm1d(out_dim),
nn.ReLU(inplace=True)
)
Acest exercițiu face parte din cursul
Deep Learning pentru imagini cu PyTorch
Instrucțiuni pentru exercițiu
- Definește
self.generatorca model secvențial. - După ultimul
gen_block, adaugă un strat liniar cu dimensiunea de intrare corespunzătoare și dimensiunea de ieșireout_dim. - Adaugă o activare sigmoid după stratul liniar.
- În metoda
forward(), pasează intrarea modelului prinself.generator.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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 ____