Matlab正在舍入我的sigmoid函数

时间:2014-04-18 02:11:24

标签: matlab logistic-regression

我在Matlab中实现了如下的sigmoid函数。

function [y] = sig(x)
    y = 1.0 / (1.0 + exp(-x));
end

当我给它一个大输入(例如100)时,该函数会将我的结果四舍五入并给我一个。

我怎样才能获得准确的价值?是否有可能或者我限制在x值的低范围内。

2 个答案:

答案 0 :(得分:1)

如果你想要1和你的sigmoid函数之间的差异,你可以用简化的数学表达式定义一个函数:

1 - 1 /(1 + exp(-x))=(1 + exp(-x))/(1 + exp(-x)) - 1 /(1 + exp(-x))= exp (-x)/(1 + exp(-x))

function [y] = one_minus_sig(x)
    y = exp(-x) / (1+exp(-x));
end

然后:

one_minus_sig(100) = 3.7200759760208356e-44 

答案 1 :(得分:0)

1.0000000000000 ...精确到大约44位数,所以我不确定会出现什么问题?

编辑:在早期版本中,我说300位数 - 由于某种原因,我在该计算中使用了x = 900。以下是几位数字:

0.99999999999999999999999999999999999999999996279924023979164037040304196136881662641107846012870706553139188204855222012652822147634307

使用Maple进行计算。