IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Definisci self.generator come un modello sequenziale.
  • Dopo l'ultimo gen_block, aggiungi uno strato lineare con la dimensione di input appropriata e dimensione di output out_dim.
  • Aggiungi una funzione di attivazione sigmoid dopo lo strato lineare.
  • Nel metodo forward(), passa l'input del modello attraverso self.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 ____
Modifica ed esegui il codice