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

Dhi*_*aik 0 python tensorflow generative-adversarial-network

我使用 gensim 库保存了我的文本向量,该库由一些负数组成。会影响训练吗?如果不是,那么为什么我在某些训练步骤之后首先获得判别器的 nan 损失值,然后再获得判别器和生成器的 nan 损失值?

Sem*_*glu 5

NaN 损失以及模型发散的原因有多种。我见过的最常见的是:

  • 你的学习率太高了。如果是这种情况,损失会增加,然后发散到无穷大。
  • 您将收到除以零的错误。如果是这种情况,您可以1e-8在输出概率中添加一个小数字。
  • 你的输入不好。如果是这种情况,请确保不要向模型提供 NaN。使用assert not np.any(np.isnan(x))输入数据。
  • 您的标签与目标函数不在同一域中。如果是这种情况,请检查标签的范围并确保它们匹配。

如果上述方法都没有帮助,请尝试检查激活函数、优化器、损失函数、网络的大小和形状。

最后,尽管可能性较小,但您正在使用的框架可能存在错误。检查框架的存储库是否有其他人遇到相同的问题。