Generatore
Un generatore GAN prende in input un vettore di rumore casuale e produce un'immagine generata. Per rendere la sua architettura più riutilizzabile, passerai sia le forme di input sia quelle di output come parametri del modello. In questo modo, potrai usare lo stesso modello con diverse dimensioni del rumore di input e immagini di forme variabili.
Troverai torch.nn già importato come nn. Puoi anche accedere a una funzione personalizzata gen_block() che restituisce un blocco composto da: strato lineare, batch norm e attivazione ReLU. La userai come mattoncino di base per il generatore.
def gen_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.BatchNorm1d(out_dim),
nn.ReLU(inplace=True)
)
Questo esercizio fa parte del corso
Deep Learning per Immagini con PyTorch
Istruzioni dell'esercizio
- Definisci
self.generatorcome un modello sequenziale. - Dopo l'ultimo
gen_block, aggiungi uno strato lineare con la dimensione di input appropriata e dimensione di outputout_dim. - Aggiungi una funzione di attivazione sigmoid dopo lo strato lineare.
- Nel metodo
forward(), passa l'input del modello attraversoself.generator.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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 ____