Discriminatorul
Acum că generatorul este definit, următorul pas în construirea unui GAN este să creezi discriminatorul. Acesta primește la intrare rezultatul generatorului și produce o predicție binară: intrarea este generată sau reală?
Vei găsi torch.nn deja importat ca nn. Ai, de asemenea, acces la o funcție personalizată disc_block(), care returnează un bloc format dintr-un strat liniar urmat de o activare LeakyReLU. O vei folosi ca element de bază pentru discriminator.
def disc_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.LeakyReLU(0.2)
)
Acest exercițiu face parte din cursul
Deep Learning pentru imagini cu PyTorch
Instrucțiuni pentru exercițiu
- Adaugă ultimul bloc al discriminatorului în model, cu dimensiunea de intrare corespunzătoare și o ieșire de
256. - După ultimul bloc al discriminatorului, adaugă un strat liniar care să mapeze ieșirea la dimensiunea
1. - Definește metoda
forward()pentru a transmite imaginea de intrare prin blocul secvențial definit în__init__().
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
class Discriminator(nn.Module):
def __init__(self, im_dim):
super(Discriminator, self).__init__()
self.disc = nn.Sequential(
disc_block(im_dim, 1024),
disc_block(1024, 512),
# Define last discriminator block
____,
# Add a linear layer
____,
)
def forward(self, x):
# Define the forward method
____