在python中将float转换为log空间

2024-06-17 10:11:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中实现了Viterbi算法(一种动态算法),我注意到对于大的输入文件,概率不断成倍增加,并且缩小到浮点精度之外。我需要在日志空间中存储这些数字。在

有谁能给出一个简单的Python代码片段来说明如何将0.0000003转换为日志空间吗?(我不确定它是需要天然的还是其他的。我只听说过“日志空间”,但不太了解。)

谢谢!在


Tags: 文件代码算法空间精度动态数字概率
1条回答
网友
1楼 · 发布于 2024-06-17 10:11:37

要移动到日志空间,请使用log。若要再次向后移动,请使用expThe 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 

下面是一个使用一些小概率的例子

^{pr2}$

相关问题 更多 >