【发布时间】:2014-02-08 03:03:14
【问题描述】:
我在 Matlab 中遇到了 viterbi logodds 计算的效率问题。
基本上我的问题是嵌套循环是强制性的,这会大大降低代码速度。这是昂贵的部分:
for i=1:input_len
for j=1:num_states
v_m=emission_value+max_over_3_elements; %V_M
v_i=max_over_2_elements; %V_I
v_d=max_over_2_elements; %V_D
end
end
我相信我不是第一个为配置文件 HMM 实施 viterbi 的人,所以也许你有一些建议。我还查看了 Matlab 自己的 hmmviterbi,但没有发现(也使用嵌套循环)。我还测试了用一些原始操作替换 max,但没有明显差异(实际上慢了一点)。
【问题讨论】:
-
Kevin Murphy 的概率建模工具包可能要快得多,因为它包含一个名为 Lightspeed 的包,它用高度优化的版本替换了概率建模中使用的许多内置 matlab 函数。 github.com/probml/pmtk3
标签: matlab profile hidden-markov-models viterbi