在Keras中训练GANs时,是否需要多次通过来优化生成器和鉴别器?

2024-09-27 19:11:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我比Keras更熟悉张量流图训练,但我在这里尝试Keras。在

在构建GAN时,需要针对与鉴别器不同的损耗(相反的损耗)对发生器进行优化。在基本tensorflow中,使用2个优化器或分别调用optimizer.compute_gradients(...)和{}并使用适当的权重组来实现这一点非常容易。在

在Keras,我看不出我能做到这两个。在Keras-GAN等实现中,生成器和鉴别器的训练似乎被分成单独的模型,然后逐个批独立地训练。这意味着每次有效更新需要更多的过程,而不是在一个过程中使用两个优化器的基本tensorflow实现。在

有没有一种方法来实现GANs的优化器,以便生成器和鉴别器都能在Keras中一次性得到训练?在

第1.14条


Tags: 方法模型过程tensorflowkerasoptimizer损耗compute
1条回答
网友
1楼 · 发布于 2024-09-27 19:11:16

对于Keras来说,这是一个非常棘手的问题,原因如下:

  1. 一个模型只能有一个优化器。。。必须更改源代码,使其接受两个或多个

  2. 即使使用自定义优化器,也可以分离权重,但它不支持分离损失,如source code for optimizers所示。可能是优化器已经计算出最终的公共损失(这将导致无法为一组权重分配一个损失,而为另一组分配另一个损失)

  3. 在代码中不容易找到训练机制。所有的事情都是分散的,支持很多事情,比如损失权重,样本权重等等。总结所有事情然后决定做什么/改变的时间太多了。

回答建议

用Keras制作你的模型。鉴别器,发生器,它们的连接和输出。在

只是不要编译它。相反,跟踪主张量(生成器输出、鉴别器输出、生成器输入),以Tensorflow样式创建损失函数,并以Tensorflow样式训练所有内容。在

相关问题 更多 >

    热门问题