Dyskryminator
Po zdefiniowaniu generatora kolejnym krokiem w budowie GAN-u jest skonstruowanie dyskryminatora. Przyjmuje on wynik generatora jako dane wejściowe i zwraca binarną predykcję: czy podane dane są wygenerowane, czy rzeczywiste?
Moduł torch.nn jest już zaimportowany jako nn. Możesz też skorzystać z niestandardowej funkcji disc_block(), która zwraca blok złożony z warstwy liniowej i aktywacji LeakyReLU. Użyjesz jej jako elementu składowego dyskryminatora.
def disc_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.LeakyReLU(0.2)
)
To ćwiczenie jest częścią kursu
Głębokie uczenie dla obrazów z PyTorch
Instrukcje do ćwiczenia
- Dodaj ostatni blok dyskryminatora do modelu, podając odpowiedni rozmiar wejścia i rozmiar wyjścia równy
256. - Po ostatnim bloku dyskryminatora dodaj warstwę liniową, która mapuje wyjście do rozmiaru
1. - Zdefiniuj metodę
forward()tak, aby przepuszczała wejściowy obraz przez blok sekwencyjny zdefiniowany w__init__().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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
____