首页 > 解决方案 > 八度 -inf 和 NaN

问题描述

我搜索了论坛并找到了这个帖子,但它没有涵盖我的问题 两种方法 -inf

在第 3 周的机器学习课程中,我-inf在使用. 结果在求和公式中没有给出答案,因此没有标量(成本函数是矩阵数学的结果)。log(0)NaNNaNJ

这是对我的功能的测试

>> sigmoid([-100;0;100])
ans =
3.7201e-44
5.0000e-01
1.0000e+00

这正如预期的那样。但假设需要ans = 1-sigmoid

>> 1-ans
ans =
1.00000
0.50000
0.00000

Log(0) 给出-Inf

>> log(ans)
ans =
0.00000
-0.69315
-Inf

-Infrows 不会添加到成本函数中,但会-Inf进行到NaN,并且我没有得到结果。我在 上找不到任何材料-Inf,但我认为我的 sigmoid 函数有问题。

你能提供任何方向吗?

标签: octave

解决方案


在这些情况下避免无穷大的典型方法是添加eps到操作数:

log(ans + eps)

eps是一个非常非常小的值,并且不会影响ans除非ans值为 0 的输出:

>> z = [-100;0;100];
>> g = 1 ./ (1+exp(-z));
>> log(1-g + eps)
ans =
    0.0000
   -0.6931
  -36.0437

推荐阅读