Nei*_*l G 7 language-agnostic math numerical-stability
什么是数值最稳定的计算方法:
log[(wx * exp(x) + wy * exp_y)/(wx + wy)]
Run Code Online (Sandbox Code Playgroud)
重量在哪里wx, wy > 0?
如果没有权重,这个函数logaddexp可以在Python中用NumPy实现,如下所示:
tmp = x - y
return np.where(tmp > 0,
x + np.log1p(np.exp(-tmp)),
y + np.log1p(np.exp(tmp)))
Run Code Online (Sandbox Code Playgroud)
我应该如何将其推广到加权版本?
logaddexp如果将加权表达式重写为,则可以将原始函数用于此目的,

这相当于,
logaddexp( x + log(w_x), y + log(w_y) ) - log(w_x + w_y)
Run Code Online (Sandbox Code Playgroud)
它应该与原始logaddexp实现一样在数值上稳定.
注:我指的numpy.logaddexp是发生在函数x和y,不x和exp_y,因为你在这个问题提了.