Как работает генератор в GAN?

#python #keras #generative-adversarial-network

#питон #keras #порождающая-состязательная-сеть

Вопрос:

Я пытаюсь понять, как работают GAN, при этом я застрял в том, как сеть генераторов может генерировать изображения из случайного ввода шума, может кто-нибудь объяснить мне, как каждая строка влияет на конечный результат (т. Е. Изображение из случайного вектора), особенно Последние три строки!

 def build_generator():
    model = Sequential()
    model.add(Dense(128 * 7 * 7, activation="relu", input_dim=latent_dim))
    model.add(Reshape((7, 7, 128)))
    model.add(UpSampling2D())                                    #inverse of MaxPooling
    model.add(Conv2D(128, kernel_size=3, padding="same"))
    model.add(BatchNormalization(momentum=0.8))
    model.add(Activation("relu"))
    model.add(UpSampling2D())
    model.add(Conv2D(64, kernel_size=3, padding="same"))
    model.add(BatchNormalization(momentum=0.8))
    model.add(Activation("relu"))
    model.add(Conv2D(channels, kernel_size=3, padding="same"))
    model.add(Activation("tanh"))

    model.summary()

    noise = Input(shape=(latent_dim,))
    img = model(noise)

    return Model(noise, img)
 

Ответ №1:

Я хотел бы поговорить о генераторах в целом, а не конкретно о том, который вы упомянули.

Как мне хотелось бы думать, в GAN на самом деле волшебство делают не модели, а процедура обучения. Теоретически, вы можете использовать для своего генератора любую архитектуру, какую захотите, вы даже можете использовать простые, состоящие из нескольких слоев, полностью связанные нейронные сети, поэтому это не обязательно должна быть модная модель CNN (например, ResNet, VGG или та, которую вы создали, хотя модные модели имеют более сложную репрезентативную структуру).мощность). Что заставляет генератор учиться создавать такие изображения, так это «состязательность» в его процедуре обучения (что-то вроде минимаксного алгоритма, если вы знаете об этом). Тот факт, что генератор постоянно получает наказание за генерацию зашумленных изображений дискриминатором. Итак, генератор изо всех сил старается создавать изображения, чтобы он мог обмануть дискриминатор с помощью обратных связей (градиентов), которые он получает.

Вот простая модель GAN, которую я обучил: Модель GAN

Итак, вы видите, выбор архитектуры (важен), но не отвечает за предоставление ему возможности создавать изображение из случайного шума.