2014-05-14 27 views
5

Bir karakter dizisindeki durumları analiz etmek için R'de bir HMM uygulaması arıyordum ve HMM kitaplığı yavaş çalışıyor gibi görünüyor, sonra RHmm kitaplığını kullanıyorum.r - viterbi RHmm Hata koruması yığın taşması

Verilerim'e bu verilerim bir örnek 1.953.138 sembolleri (U, D, H)

oluşan bir dizidir:

string <- sample(c("D","U","N"),1953138,replace=T) 

montaj SMM Viterbi çalışan

HMM <- HMMFit(string,dis="DISCRETE",nStates=3)$HMM 

ve işte, burada

viterbi_results <- viterbi(HMM,string) 
#Error: protect(): protection stack overflow 
Ben dize viterbi (sadece bir alt kümesini kullanmak Ancak eğer 363.210

) sadece çalışıyor:

viterbi_results <- viterbi(HMM,string[1:49963]) 

Aslında çalıştırmayı denerseniz:

viterbi_results <- viterbi(HMM,string[1:49964]) 
#Error: protect(): protection stack overflow 

aynı yığın taşması hatası alıyorum, sonra 49964 vektördeki elemanlar,

limitidir. Problemin --max-ppsize'nin varsayılan R seçeneğinin 50000 olduğu gerçeği ile ilgili olabileceğini düşünüyorum, ancak bu parametreyi sınırlamak için --max-ppsize 500000 #sorunu çöz. Bununla birlikte viterbi() 'deki vektör sınırı artar, 49964 elementten dize vektöründeki 499960 elementin bir yerine gider.

Kuyrukta viterbi algoritmasını çalıştırmayı denedim. Önce 49960 elemanlarının parçalar haline dize splited ve bunların her birine Viterbi geçerlidir, ancak ben LINK yaşıyorum birine benzer bir sorun buldum stackoverflow Burada aynı hatayı

list_string <- split(string, ceiling(seq_along(string)/49960)) 

viterbi_results <- lapply(list_string,function(x) viterbi(HMM,x)$states) 
#Error: protect(): protection stack overflow 

aldık. Görünüşe göre sorunun kaynağı, ihtiyaç olmayan bir döngü içinde bir KORUMA idi. Viterbi fonksiyonunun C++ kaynak koduna atladım ama tek bir PROTECT yok.

Ayrıca, ulimit -s unlimited'u da denedim, ancak aynı hatayı alıyorum.

İmdat

bağlantı RHmm package

teşekkür etmek RAM bellek 1009 GB UNix çok çalışıyorum!

+0

Im gözlemlerin milyonlarca bir vektör haricinde tam aynı sorun haline çalışıyor - Hiç sorunu çözmek? –

+0

Henüz değil, geliştiricilerle bağlantı kurmaya çalıştım ama şimdiye kadar hiç şans yoktu. Yukarıda bahsettiğim gibi, – Sierra

cevap

0

artış noktası yığın boyutu R başladığında:

R --max-pp-size=100000 
+0

, R'de sınır olan --max-ppsize 500000 kullandım, hala hata çıkıyor. – Sierra