我想logsumexp()
在 python 2.7 中使用 numpy。我需要解决的公式如下所示:
log ( 1 + e^a1 + e^a2 + e^a3 + ... e^an - e^ax )
最后一项是负数,只需附加。排除最后一个学期,我会做以下事情:
myarray = numpy.array([0, a1, a2, a3, ..., an])
这样,第一个元素是0
,那么e^0 = 1
我就有了我的第一个术语,即1
。那我就用
result = numpy.logsumexp(myarray)
我会得到正确的结果。
但现在我必须附加 a -e^ax
,因为它是负数,我不能简单地附加ax
到myarray
. 我也不能追加-ax
,因为那是错误的,这意味着我要添加1/e^ax
,而不是-e^ax
.
有什么直接的方法可以附加这个以便我仍然可以使用logsumexp()
吗?我坚持使用logsumexp()
而不是单独使用numpy.exp()
andnumpy.sum()
的唯一原因numpy.log()
是因为我的印象是logsumexp
它还包含稳定性以防止下溢(如果我错了,请纠正我)。但是,如果没有其他办法,那么我想我别无选择。