0
我在Python中實現了Viterbi算法(動態算法),並且我注意到對於大型輸入文件,概率不斷在浮點精度之外倍增和收縮。我需要將這些數字存儲在日誌空間中。在python中將浮點數轉換爲日誌空間
任何人都可以給出一個簡單的例子如何將0.0000003轉換爲日誌空間的Python代碼片段? (我不確定它是否需要自然記錄或其他日誌,我只聽說過「日誌空間」,但並不真正瞭解它。)
謝謝!
我在Python中實現了Viterbi算法(動態算法),並且我注意到對於大型輸入文件,概率不斷在浮點精度之外倍增和收縮。我需要將這些數字存儲在日誌空間中。在python中將浮點數轉換爲日誌空間
任何人都可以給出一個簡單的例子如何將0.0000003轉換爲日誌空間的Python代碼片段? (我不確定它是否需要自然記錄或其他日誌,我只聽說過「日誌空間」,但並不真正瞭解它。)
謝謝!
要移動到日誌空間,請使用log
。要再次移回,請使用exp
。 The rules in log space are different - 例如。執行乘法是添加在日誌空間中。
>>> from math import log, exp
>>> log(0.0000003)
-15.01948336229021
>>> exp(-15.01948336229021)
3.0000000000000015e-07
>>> log(0.0000003) + log(0.0000003)
-30.03896672458042
>>> exp(-30.03896672458042)
9.000000000000011e-14 # 0.0000003 * 0.0000003
這裏使用一個例子一些小概率
>>> probabilities = [0.0000003, 0.0000004, 0.0000005]
>>> exp(sum(log(p) for p in probabilities))
5.999999999999992e-20
你能使用''decimal.Decimal()''這裏? –