我有以下表达式:
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
导入。
您可以使用
math.log()
替换numpy.log()
,这可能会引发错误日志中可能仍有负值,这会给nan以实数。
a
和y
应该表示0到1之间的概率,因此需要检查为什么在那里有更小/更大的值。加上1e-7表示有点可疑,因为np.log(0)
给出了-inf
,我认为这是您想要的值。相关问题 更多 >
编程相关推荐