Matlab의 viterbi logodds 계산에 효율성 문제가 있습니다.Matlab의 빠른 DP (프로필 HMM의 경우 Viterbi)
기본적으로 내 문제는 코드를 많이 감속시키는 중첩 루프가 반드시 있어야한다는 것입니다.
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에 대한 비터 비를 구현하는 첫 번째 아니에요 생각이 비싼 부분입니다. 또한 Matlab 자신의 hmmviterbi를 살펴 보았지만 계시도 없었습니다 (중첩 루프 사용). 나는 또한 max를 몇 가지 기본 연산으로 대체하면서 테스트했지만 눈에 띄는 차이는 없었습니다 (사실 약간 느림).
Kevin Murphy의 Probabilistic Modeling Toolkit은 확률 론적 모델링에 많이 사용되는 matlab 함수를 고도로 최적화 된 버전으로 대체하는 Lightspeed라는 패키지를 포함하고 있기 때문에 상당히 빠릅니다. https://github.com/probml/pmtk3 – jerad