gpt4 book ai didi

c - 小基数的高效指数

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:06 25 4
gpt4 key购买 nike

我需要执行一个 softmax 操作。也就是说,给定一系列 n 实数值,范围从 -inf 到 +inf,我通过对每个值求幂并除以指数之和将它们转化为概率:

for (i = 0; i < n; i++)
p_x[i] = exp(x[i]) / sum_exp(x, n)

(不要按字面意思理解代码,我不会总结所有 exp 的每次迭代!)

在某些极端情况下(使用 8 字节 double 值),当值超过 700 时,我遇到了溢出问题。我知道我可以使用另一个基数而不是 e,但是,恐怕调用 pow 会比 exp 慢得多(速度对我来说很重要)。

解决这个问题最快的方法是什么?

最佳答案

将每个数字用作 64 位 float 中的 52 位尾数。这只是一个掩蔽然后类型转换的问题。

#include <stdio.h>

int main(int argc, char *argv[])
{
long long val = 1234567890;
long long mval = val & ~0xfff0000000000000ULL;
float fval = *((float*)&mval);
printf("%f", fval);
}

关于c - 小基数的高效指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12907247/

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