Дискримінатор
Після визначення генератора наступний крок у побудові 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
____