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

时间:2018-09-06 20:24:15

标签: python tensorflow generative-adversarial-network

我已经使用gensim库保存了我的文本向量,该库由一些负数组成。会影响培训吗? 如果不是,那为什么在经过一定的训练之后,为什么我先求鉴别器然后再求鉴别器和发电机的nan损失值?

1 个答案:

答案 0 :(得分:1)

NaN损失的原因有很多,为什么模型会不同。我见过的最常见的是:

  • 您的学习率太高。在这种情况下,损耗会增加,然后扩散到无穷大。
  • 您得到一个除数为零的错误。在这种情况下,您可以向输出概率中添加一个像1e-8这样的小数字。
  • 您输入的内容错误。在这种情况下,请确保您不使用NaN来填充模型。 在输入数据上使用assert not np.any(np.isnan(x))
  • 您的标签不在目标函数的相同域中。在这种情况下,请检查标签范围并确保它们匹配。

如果以上方法均无济于事,请尝试检查激活功能,优化程序,损失功能,网络的大小和形状。

最后,尽管可能性较小,但您使用的框架可能存在错误。如果其他框架存在相同问题,请检查框架的仓库。