0

Gaussian PDF から生成された 非常に小さな指数値 (たとえばexp(n)、 ) のリストがあります。n<-300

たとえば、次のpythonのような疑似コードのように、それぞれが合計にどれだけ比例しているかを計算したいと思います。

s = 0  # sum of all values
for n in exponents:
    s += exp(n)

for n in exponents:
    k = exp(n)/s  # I want to compute k for each n

問題は、 の値nがすべて非常に小さいため、合計sがゼロになることがあり、ゼロ除算エラーが発生することです。

できることの 1 つは、定数値 (300 など) をすべてに追加してnアンダーフローを防ぐことですが、それ以外の場合はオーバーフローが発生します。

どうすればこれを解決できますか?

私は自分自身を明確に表現したかどうかわかりません.これらのいずれかが意味をなさないか、文法上の誤りがある場合は、私を修正してください. 前もって感謝します。

4

1 に答える 1

1

mすでに観察したように、 all から定数値を減算することでそれを行うことができますn

mオーバーフローを避けるために、 などの固定を選択しないでくださいm = - 300。代わりに、mすべての最大になるように選択しますn。次に、すべての正規化された指数値は最大1で になります。したがって、正規化された合計は最大で指数の数になり、これは合理的に小さいはずです。

于 2016-03-07T06:47:16.840 に答える