Дискриминатор
После того как генератор определён, следующий шаг в построении 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
____