JavaScript中的大数Sigmoid

7

据我所知,您使用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的数字。

首先将您的值除以某个数,使其变小。看一下Sigmoid函数的图表。 - user47589
2个回答

11

Sigmoid函数 是具有特定属性的任何函数,这些属性使其具有特征性的S形状。你的问题有很多答案。例如,任何定义类似于以下内容的函数

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

如果需要的话,这将是一个不错的选择。 k 越大,有用的区域就越大。


4
一个Sigmoid函数没有边界,这意味着它接受从无限小到无限大的值。
另一方面,Javascript会舍入数字(IEEE)。
无论如何,您可以在将输入传递给公式之前重新调整其比例。
另一个选项是调整公式值,特别是z值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接