scipy的logsumexp()处理下溢问题吗?

7 投票
1 回答
4530 浏览
提问于 2025-04-19 15:54

scipy库里的 logsumexp() 这个函数的实现,是否包含了一种技巧,可以通过从每个元素中减去数组里的最大值,来防止数值变得太小(下溢)呢?

这里面提到的技巧,就是用 m = maxval 这个方式:

enter image description here

1 个回答

11

你可以在这里查看定义 logsumexp 的源代码 这里。(注意,在 文档页面上也有指向源代码的链接。)

你会看到:

a_max = a.max(axis=0)
...
out = log(sum(exp(a - a_max), axis=0))

所以,没错,scipy 的 logsumexp 确实是从每个元素中减去最大值。

撰写回答