Zacznij terazZacznij za darmo

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

Zobacz kurs

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
        ____
Edytuj i uruchom kod