【问题标题】:why do i get nan loss value in training discriminator and generator of GAN? [duplicate]为什么我在 GAN 的训练鉴别器和生成器中得到 nan 损失值? [复制]
【发布时间】:2019-02-12 03:58:19
【问题描述】:

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

【问题讨论】:

标签: python tensorflow generative-adversarial-network


【解决方案1】:

NaN 损失有多种原因,以及模型出现分歧的原因。 最常见的是:

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

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

最后,虽然不太可能,您使用的框架可能存在错误。如果有其他人有同样的问题,请检查框架的 repo。

【讨论】:

  • 好的,我会尝试,但首先我需要澄清一下。我有彩色图像数据集,其中一些是 RGB 形式,一些是 RGBA 形式。我应该如何将它们输入到我的模型中?
  • 此外,我首先获得了生成器的 nan 损失值。
  • 您需要标准化您的输入并为您的网络提供相同类型的数据。在开发 ML 模型时,预处理非常重要。
  • 我正在这样做,我开始知道学习率有点高,所以通过降低它我能够顺利运行。谢谢
  • 很高兴听到这个消息。如果这解决了您的问题,请将其标记为已解决,以便其他人可以从该解决方案中受益。
猜你喜欢
  • 2019-12-22
  • 2021-11-18
  • 2020-05-05
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多