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

Генератор

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