所以我要学习thisGAN教程,作者设置了一个discriminator
如下:
model_discriminator = Sequential()
model_discriminator.add(net_discriminator)
其中net_discriminator
是另一个Sequential
模型。你知道吗
然后他建立adversarial
模型如下:
model_adversarial = Sequential()
model_adversarial.add(net_generator)
# Disable layers in discriminator
for layer in net_discriminator.layers:
layer.trainable = False
model_adversarial.add(net_discriminator)
其中net_generator
是另一个sequential
模型。你知道吗
两个模型同时使用train_on_batch
进行训练。你知道吗
我不明白的是net_discriminator
部分的权重是如何通过训练model_discriminator
来更新的。对我来说,它们是两个独立的网络,训练一个包含net_discriminator
层的模型不应该影响另一个。而且,层在adversarial
模型中被冻结,所以这不应该阻止它们被训练吗?你知道吗
有没有人能给我一个低层次的解释?谢谢!你知道吗
教程的作者已经在下面几行给出了第一个问题的答案,他说:
因此,我认为他创建
model_discriminator
模型的方式是通过将net_discriminator
模型添加到new Sequential()
层,这就是model_adversarial
的net_discriminator
部分的权重如何通过训练model_discriminator
得到更新的原因,因为在model_discriminator
的训练过程中,它实际上是它的net_discriminator
部分得到了训练。你知道吗回答第二个问题:
据作者说
因此,作者的上述解释清楚地表明了为什么我们要冻结敌方模型中的鉴别器部分。
adverserial
模型同时包含generator
和discriminator
网络。adverserial
模型使用随机噪声作为输入,并在生成的图像上输出discriminator
的最终预测。因此,这里已经训练过的discriminator
网络只用于预测,不需要将其包含在训练中。你知道吗相关问题 更多 >
编程相关推荐