Генератор
Генератор GAN приймає на вході вектор випадкового шуму та створює згенероване зображення. Щоб зробити архітектуру більш багаторазовою, ви передасте як параметри моделі і форму входу, і форму виходу. Так можна використовувати ту саму модель з різними розмірами вхідного шуму та зображеннями різних форм.
Бібліотеку torch.nn вже імпортовано для вас як nn. Також у вас є доступ до користувацької функції gen_block(), яка повертає блок із: лінійного шару, пакетної нормалізації та активації ReLU. Ви використаєте її як будівельний блок для генератора.
def gen_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.BatchNorm1d(out_dim),
nn.ReLU(inplace=True)
)
Ця вправа є частиною курсу
Глибоке навчання для зображень із PyTorch
Інструкції до вправи
- Визначте
self.generatorяк послідовну модель. - Після останнього
gen_blockдодайте лінійний шар з відповідним розміром входу та розміром виходуout_dim. - Додайте сигмоїдну активацію після лінійного шару.
- У методі
forward()пропустіть вхід моделі черезself.generator.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
class Generator(nn.Module):
def __init__(self, in_dim, out_dim):
super(Generator, self).__init__()
# Define generator block
self.generator = ____(
gen_block(in_dim, 256),
gen_block(256, 512),
gen_block(512, 1024),
# Add linear layer
____
# Add activation
____
)
def forward(self, x):
# Pass input through generator
return ____