python-日志中遇到无效值

2024-04-26 21:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下表达式: 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,以避免日志中有零。y&;a是numpy数组,numpy作为np导入。


Tags: toinnumpylog警告value表达式np
2条回答

您可以使用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

日志中可能仍有负值,这会给nan以实数。

ay应该表示0到1之间的概率,因此需要检查为什么在那里有更小/更大的值。加上1e-7表示有点可疑,因为np.log(0)给出了-inf,我认为这是您想要的值。

相关问题 更多 >