我有以下表达式: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
,以避免在log中有零。y
和a
是numpy数组,numpy
被导入为np
。
发布于 2016-05-28 15:21:30
您可能在log中仍然有负值,这将为nan提供实数。
a
和y
应该表示0到1之间的概率,所以你需要检查为什么你在那里有更小/更大的值。添加1e-7表示有问题,因为np.log(0)
提供了-inf
,我认为这就是您想要的值。
发布于 2016-06-02 09:39:48
您可以使用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
https://stackoverflow.com/questions/37496299
复制相似问题