记录概率日志时摆脱ValueErrors

问题描述

@H_404_0@我想找到最大可能的路径,并尝试关联日志概率以消除步骤顺序相乘时的下溢错误

@H_404_0@在计算最大可能路径时,我迭代地仅保留最佳路径,并从头到尾删除其他路径(请考虑此处绘制的图像)。第一步之后(我不必删除任何操作,从初始状态到第一状态只有一条路径),我将仅保留通往该状态的最佳路径,并且该状态直至该状态的概率都将达到该水平。>

@H_404_0@在第3步(此处未显示)中,该分数将与其他状态转换概率相乘,并且算法将在第三步选择到达每个状态的最佳路径。但是,如您所见,由于与节点关联的分数(标记为*)为-3.0,因此在尝试计算其对数值时会抛出ValueError。有什么想法可以摆脱吗?

@H_404_0@

enter image description here

@H_404_0@ P.S我已经完成了实现,并且不想展示它,因为它非常大且难以解释。错误仅在以下一行,其中best_incoming_weight = -3.0这里

    probability = math.log2(best_incoming_weight) + math.log2(current_incoming_weights)

解决方法

您计算了概率的对数。它必须为负数或零,因为介于0和1之间的任何数字的对数均为非正数。要将获得的结果转换为传统概率,您需要计算2**probability,其中probability如上所述。