python - 日志中遇到无效值

python - invalid value encountered in log

我有以下表达: log = np.sum(np.nan_to_num(-y*np.log(a+ 1e-7)-(1-y)*np.log(1-a+ 1e-7)))

它给我以下警告:

RuntimeWarning: invalid value encountered in log
  log = np.sum(np.nan_to_num(-y*np.log(a+ 1e-7)-(1-y)*np.log(1-a+ 1e-7)))

我不明白什么可能是无效值或我为什么会得到它。感谢任何帮助。

注意:这是一个交叉熵成本函数,我在其中添加了 1e-7 以避免日志中有零。 ya 是 numpy 数组,numpy 被导入为 np

你可能在日志中仍然有负值,它给出了实数的 nan。

ay 应该代表 0 到 1 之间的概率,因此您需要检查为什么那里有 smaller/larger 值。添加 1e-7 显示有些可疑,因为 np.log(0) 给出 -inf,我认为这是您想要的值。

您可以使用 math.log() 替换 numpy.log(),这可能会引发错误

>>> import numpy
>>> numpy.log(0)
-inf
>>> numpy.__version__
'1.3.0'
>>> import math
>>> math.log(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error