2

据我了解,您使用 sigmoid 函数将数字减少到 0-1 的范围。

使用这个库中的函数

function sigmoid(z) {
  return 1 / (1 + Math.exp(-z));
}

这适用于数字 1-36。任何高于此的数字都将返回 1。

sigmoid(36) -> 0.9999999999999998
sigmoid(37) -> 1
sigmoid(38) -> 1
sigmoid(9000) -> 1

如何增加范围,以便此函数可以处理大于 36 的数字。

4

2 回答 2

6

sigmoid 函数是具有某些属性的任何函数,这些属性使其具有特征 s 形状。你的问题有很多答案。例如,任何定义如下的函数

const k = 2;
function sigmoid(z) {
  return 1 / (1 + Math.exp(-z/k));
}

符合要求。越大k,有用域越大。

于 2019-02-07T18:39:24.933 回答
3

Sigmoid 函数没有界限,这意味着它接受从无限小到无限大的值。
另一方面,Javascript 将对数字进行四舍五入(IEEE)。

无论如何,您可以做的是在将输入传递给公式之前重新调整输入。
另一种选择是修改公式值,尤其是z值。

于 2019-02-07T18:39:33.137 回答