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()
か? andをlogsumexp()
個別に使用するのではなく、使用することを主張している唯一の理由は、アンダーフローを防ぐために安定性も組み込んでいるという印象があるためです (間違っていたら訂正してください)。でも、それしか方法がないのなら仕方がないと思います。numpy.exp()
numpy.sum()
numpy.log()
logsumexp