DC - 生成性对抗网络。理解代码的问题

问题描述 投票:-1回答:1

这是Deconvolutional-Convoltional Generative Adversarial Network(DC-GAN)代码的一部分

discriminator.trainable = False
ganInput = Input(shape=(100,))
# getting the output of the generator
# and then feeding it to the discriminator
# new model = D(G(input))
x = generator(ganInput)
ganOutput = discriminator(x)
gan = Model(input=ganInput, output=ganOutput)
gan.compile(loss='binary_crossentropy', optimizer=Adam())

我不明白ganInput = Input(shape=(100,))的作用是什么。显然ganInput是一个变量,但什么是Input?这是一个功能吗?如果Input是一个函数,那么ganInput将包含什么?

然后是ganInput被送入生成器,因为它是一个空变量(假设)它无关紧要。接下来ganOutput抓住了discriminator的输出。

然后是问题所在。我读了关于Model API但我不完全理解它的作用。

总结一下这些是我的问题:ganInput的作用是什么,Input在第二行是什么。什么是Model做什么,它是什么?

使用带有TensorFlow后端的Keras完整的源代码:https://github.com/yashk2810/DCGAN-Keras/blob/master/DCGAN.ipynb

请询问任何更多澄清/详细信息。如果您知道我的一个查询的答案,我会请求您回答它将是一个巨大的帮助。谢谢

python-3.x tensorflow machine-learning deep-learning conv-neural-network
1个回答
0
投票

输入内容:注意keras.layers的通配符导入。在上下文中,Inputkeras.layers.Input。通常,如果您看到一个未在Python中定义或显式导入的函数或类,它通过通配符导入到达那里,即

from keras.layers import *

这意味着将keras.layers中的所有内容直接导入工作区。

什么是modelmodel对象本质上是与Keras建立神经网络的接口。

你可以在model或者这个keras.layers.Input上阅读有关model docsmodel guide的内容,因为我对Keras不是很熟悉。

这个例子中发生的事情是他们将生成器和鉴别器定义为Sequentials。但是GAN模型比标准的旧Sequential稍微复杂一点。作者通过在每次迭代中标记需要输入的数据(在这种情况下,只是发生器的随机噪声 - ganInput)作为keras.layers.Input来处理。然后,就像你说的那样,ganOutput捕获了鉴别器的输出。由于我们有两个不同的Sequentials需要包装在一起,作者使用model API。

© www.soinside.com 2019 - 2024. All rights reserved.