Генератор
Генератор 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. - Добавьте функцию активации sigmoid после линейного слоя.
- В методе
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 ____