2014-05-14 18 views
5

Tôi đang tìm kiếm triển khai HMM trong R để phân tích các trạng thái trong chuỗi ký tự và thư viện HMM có vẻ chạy chậm, sau đó tôi đang sử dụng thư viện RHmm.r - viterbi RHmm Lỗi bảo vệ ngăn xếp tràn

dữ liệu của tôi là một chuỗi của 1.953.138 ký tự (U, D, N)

đây là một mẫu dữ liệu của tôi:

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

phù HMM

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

chạy Viterbi và đây là nơi tôi gặp lỗi

viterbi_results <- viterbi(HMM,string) 
#Error: protect(): protection stack overflow 
.210

Tuy nhiên nếu tôi chỉ sử dụng một tập hợp con của Viterbi string() làm việc tốt:

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

Thực ra nếu tôi cố gắng chạy:

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

tôi nhận được lỗi tương tự stack overflow, sau đó 49.964 các phần tử trong vector là giới hạn

Tôi nghĩ rằng sự cố có thể liên quan đến thực tế là tùy chọn R mặc định của --max-ppsize là 50000, nhưng thay đổi thông số này thành giới hạn - max-ppsize 500000 không #fix vấn đề. Tuy nhiên, giới hạn vectơ trong viterbi() không tăng lên, nó đi từ 49964 phần tử đến khoảng 4.99960 phần tử trong vector chuỗi.

Tôi đã cố gắng chạy thuật toán viterbi theo khối. Trước tiên tôi tách ra chuỗi vào khối của 49.960 yếu tố và áp dụng Viterbi để mỗi người trong số họ, nhưng tôi đã nhận lỗi cùng

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 

đây trong stackoverflow Tôi tìm thấy một vấn đề tương tự như tôi đang gặp LINK. Rõ ràng nguồn gốc của vấn đề là một PROTECT bên trong một vòng lặp không cần thiết. Tôi đã nhảy vào mã nguồn C++ của hàm viterbi nhưng không có một PROTECT duy nhất.

Tôi cũng đã thử ulimit -s unlimited, nhưng tôi nhận được lỗi tương tự.

tôi đang làm việc trên unix với 1009 GB bộ nhớ RAM

liên kết đến RHmm package

Cảm ơn rất nhiều sự giúp đỡ!

+0

Im chạy vào cùng một vấn đề chính xác, ngoại trừ với một vector với hàng triệu người quan sát - đã bao giờ bạn giải quyết vấn đề? –

+0

Chưa, tôi đã cố gắng liên hệ với các nhà phát triển nhưng không có may mắn cho đến nay. – Sierra

Trả lời

0

tăng điểm ngăn xếp kích thước khi R bắt đầu:

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

như tôi đã đề cập ở trên, tôi đã sử dụng --max-ppsize 500000 là giới hạn trong R. Tuy nhiên, lỗi xuất hiện. – Sierra

Các vấn đề liên quan