ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Definește self.generator ca model secvențial.
  • După ultimul gen_block, adaugă un strat liniar cu dimensiunea de intrare corespunzătoare și dimensiunea de ieșire out_dim.
  • Adaugă o activare sigmoid după stratul liniar.
  • În metoda forward(), pasează intrarea modelului prin self.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 ____
Editează și rulează codul