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

大卫·帕克斯(David Parks):

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

在构建GAN时,需要优化发电机,使其免受与鉴别器不同的损耗(相反的损耗)的影响。在基本张量流中,这很容易使用两个优化器或通过调用optimizer.compute_gradients(...)optimizer.apply_gradients(...)分别使用适当的权重组来实现

在Keras中,我看不到我可以实现这两个目标。在诸如Keras-GAN的实现中,似乎将生成器和鉴别器的训练划分为单独的模型,然后逐批地进行独立训练。这意味着每次有效更新所需的遍数要比基本tensorflow实现所需的遍数更多,而基本张量流实现需要两个优化器一起运行。

有没有一种方法可以为GAN实施优化器,以便生成器和鉴别器都可以在Keras中一次通过训练?

TF 1.14

丹尼尔·莫勒(DanielMöller):

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

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

  2. 即使在使用定制优化器时,也可以分离权重,但是它不能提供分离损失的支持,如优化器源代码所示最有可能的是,优化器已经计算出最终的常见损失(这样就不可能将一组损失归因于一组权重,而将另一损失归因于另一组权重)

  3. 在代码中不容易找到训练机制。事物散布在各处,支持诸如损失权重,样本权重等许多事物。汇总所有内容然后决定做什么/更改所需的时间太长了。

回答建议

就像在Keras中制作模型一样。鉴别器,生成器,它们的连接和输出。

只是不要编译它。而是跟踪主要张量(发电机输出,鉴别器输出,发电机输入),以Tensorflow样式创建损失函数,并以tensorflow样式训练所有事物。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

生成器的优化器是否也训练鉴别器?

为什么在GAN的鉴别器和生成器的训练中得到nan损失值?

如何在GAN中平衡生成器和鉴别器的性能?

如何收集生成器和鉴别器的可训练变量?(张量流)

训练 GAN 鉴别器

DCGAN:鉴别器变得过于强大而无法让生成器学习

通过更多示例进行训练鉴别器

优化生成器以缩短执行时间

Tensorflow GAN 鉴别器损失 NaN 自负鉴别器输出

GAN无法收敛。鉴别器损耗不断增加

Tensorflow GAN鉴别器无法学习

关于DbSet和鉴别器

在训练keras模型时,如何使用数据生成器更快地生成数据?

在异步生成器函数中是否需要等待?

生成器和读取文件优化

忽略了Doctrine生成的SQL的鉴别器部分

如何使迭代器和生成器在 micropython 中工作?

生成 300*300*3 图像的 GAN 的生成器和判别器模型的架构应该是什么?

当通过“fit_generator”函数训练模型时,如何通过数据生成器生成验证数据?

带有链接时代码生成器的MSVC是否可以跨C和C ++优化?

避免与AspNetUsers,AspNetRoles和AspNetUserRoles使用“鉴别器”

用现有值初始化生成器

在Jackson中以编程方式设置类型鉴别器

在Jackson中以编程方式设置类型鉴别器

什么是ASP.NET迁移中的“鉴别器”列?

OpenAPI 2.0(Swagger 2.0)多态中的“鉴别器”

如何从Typescript中的类元组中提取鉴别器

与列表相比,通过生成器多次迭代的速度

打字稿通过鉴别器属性将鉴别联合类型的数组分组为记录