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

why do i get nan loss value in training discriminator and generator of GAN?

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

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

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

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

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