gpt4 book ai didi

c - 快速物流功能

转载 作者:太空狗 更新时间:2023-10-29 15:14:28 24 4
gpt4 key购买 nike

我正在寻找一种实现快速物流功能的方法。逻辑函数的经典定义是:

y(x) = 1/(1 + (1/e^x)) 其中 ^ 是求幂。

或者同样地:y(x) = (e^x)/(e^x + 1)

但是,我的特殊逻辑函数有一个基数 E 而不是 e,所以:

y(x) = E^x / (E^x + 1)

在我的例子中,E 和 x 是 32 位整数,16.16 类型的基数 2 中的定点。 E 尽可能接近实常数 e。

这种功能最快的算法是什么?我宁愿没有查找表。像位操作这样的东西应该是完美的。


更新:

凭直觉,我觉得有一个非常快速和简单的方法,基于欧拉公式:

e^(i*x) = cos(x) + i*sin(x)

其中 i 是虚数单位。

最佳答案

记住上溢和下溢。代码 exp(x)/(1 + exp(x)) 将溢出 x 的大正值,即使结果应该大约为 1。您可以通过使用 1/避免这种情况(1 + exp(-x))。对于 x 的大值,这将下溢为 0,但这可能没问题,具体取决于您的上下文,因为在这种情况下确切的结果几乎为零。

如果为 x 的大正值或负值调用您的代码,您可以通过为无论如何都将表示为 0 或 1 的值返回 0 或 1 来节省一点时间,并避免调用 exp。所以你的代码可能是这样的

if (x > positive cutoff) return 1;
if (x < negative cutoff) return 0;
return 1 / (1 + exp(-x))

这是否真的更有效取决于您的特定环境以及您获得参数超过截止值的频率。

关于c - 快速物流功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3786751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com