如何解决在networkx图上传播小边缘权重
我是networkx
的新手。具体来说,我一直在尝试在networkx图上实现Forward算法。通过前向算法,我暗示了HMM中使用的前向传播算法-该算法为每个节点计算sum( edge(prev_node,curr_node).weight * prev_node.value for prev_node in in_edges(curr_node)
。
我的问题是我的一些边权重确实很小,为了应对下溢,我将概率转换为对数概率为负,最大值为max(adjacency_matrix) = 6.16e+01
。要解决此问题,我一遍又一遍地致电scipy.special.logsumexp
,发现自己失去了很多精度。我感觉自己在重新发明轮子,networkx
中是否有内置算法在考虑下溢的同时实现了前向传播算法?
print(adjacency_matrix)
>>>
[[0.00e+00,0.00e+00,6.16e+01,1.23e+02,1.85e+02,2.47e+02,3.08e+02,3.70e+02,4.31e+02,5.55e+02,6.16e+02],[0.00e+00,2.14e+01,4.86e+01,6.70e+01,8.22e+01,9.49e+01,5.55e+02],2.37e+01,4.92e+01,6.71e+01,9.50e+01,4.93e+02],2.75e+01,4.89e+01,6.66e+01,8.18e+01,9.52e+01,4.31e+02],1.33e+01,6.67e+01,8.25e+01,3.70e+02],5.70e+00,9.56e+01,3.08e+02],6.28e+00,4.87e+01,8.23e+01,2.47e+02],1.06e+01,6.68e+01,1.85e+02],1.23e+02],1.00e-26],0.00e+00]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。