НачатьНачать бесплатно

Дискриминатор

После того как генератор определён, следующий шаг в построении GAN — создание дискриминатора. Он принимает на вход выходные данные генератора и выдаёт бинарное предсказание: является ли поданное изображение сгенерированным или реальным?

Модуль torch.nn уже импортирован под псевдонимом nn. Также вам доступна вспомогательная функция disc_block(), которая возвращает блок из линейного слоя и функции активации LeakyReLU. Используйте её как строительный блок для дискриминатора.

def disc_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.LeakyReLU(0.2)
    )

Это упражнение является частью курса

Глубокое обучение для работы с изображениями на PyTorch

Посмотреть курс

Инструкции к упражнению

  • Добавьте последний блок дискриминатора в модель с подходящим размером входных данных и выходным размером 256.
  • После последнего блока дискриминатора добавьте линейный слой, который преобразует выход к размеру 1.
  • Определите метод forward(), чтобы передавать входное изображение через последовательный блок, заданный в __init__().

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

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
        ____
Редактировать и запускать код