这是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
请询问任何更多澄清/详细信息。如果您知道我的一个查询的答案,我会请求您回答它将是一个巨大的帮助。谢谢
输入内容:注意keras.layers
的通配符导入。在上下文中,Input
是keras.layers.Input
。通常,如果您看到一个未在Python中定义或显式导入的函数或类,它通过通配符导入到达那里,即
from keras.layers import *
这意味着将keras.layers
中的所有内容直接导入工作区。
什么是model
:model
对象本质上是与Keras建立神经网络的接口。
你可以在model
或者这个keras.layers.Input
上阅读有关model docs和model guide的内容,因为我对Keras不是很熟悉。
这个例子中发生的事情是他们将生成器和鉴别器定义为Sequential
s。但是GAN模型比标准的旧Sequential
稍微复杂一点。作者通过在每次迭代中标记需要输入的数据(在这种情况下,只是发生器的随机噪声 - ganInput
)作为keras.layers.Input
来处理。然后,就像你说的那样,ganOutput
捕获了鉴别器的输出。由于我们有两个不同的Sequential
s需要包装在一起,作者使用model
API。