使用Keras训练部分模型的问题(关于GAN模型)

我在使用Keras实现GAN模型时遇到了一个奇怪的问题。

在GAN中,我们需要先构建G和D,然后再添加一个新的Sequential模型(GAN)并依次添加G和D。

当我使用D.train_on_batch时,Keras似乎通过GAN模型反向传播到G,我得到了一个InvalidArgumentError: You must feed a value for placeholder tensor 'dense_input_1' with dtype float的错误。

如果我移除GAN模型(最后堆叠的G然后D的顺序模型),它会正确计算d_loss

我的环境是:

  • Ubuntu 16.04
  • keras 1.2.2
  • tensorflow-gpu 1.0.0
  • keras配置:{ "backend": "tensorflow", "image_dim_ordering": "tf", "epsilon": 1e-07, "floatx": "float32" }

我知道很多人已经成功使用Keras实现了GAN,所以我想知道我哪里做错了。

代码部分保持不变

错误信息:

错误信息部分保持不变

回答:

首先,我建议你切换到函数式API模型。这类混合模型更容易通过函数式模型处理。

说实话,我不知道为什么你的解决方案不起作用,似乎当你将D模型连接到一个新输入时,它会变得“损坏”并与之连接。我找到解决这个问题的办法是定义层并在判别器和GAN模型中使用它们。以下是代码:

代码部分保持不变

这有帮助吗?

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注