为啥我在 GAN 的训练鉴别器和生成器中得到 nan 损失值? [复制]

Posted

技术标签:

【中文标题】为啥我在 GAN 的训练鉴别器和生成器中得到 nan 损失值? [复制]【英文标题】: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 损失值,然后在经过某些训练步骤后才获得鉴别器和生成器的损失值?

【问题讨论】:

这里详细解答了导致 NAN 丢失的可能原因***.com/questions/40050397/… 【参考方案1】:

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

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

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

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

【讨论】:

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

以上是关于为啥我在 GAN 的训练鉴别器和生成器中得到 nan 损失值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

(MNIST - GAN) 鉴别器和生成器误差在第一次迭代后接近于零

GAN - 生成器损失减少,但鉴别器假损失在初始下降后增加,为啥?

如何在 Tensorflow 中异步更新 GAN 生成器和判别器?

·GAN·

生成对抗网络中的鉴别器损失没有改变

在生成对抗网络中如何使用鉴别器的输出训练生成器