2016-12-05 3 views
0

Java 프로젝트에 libSVM을 사용하고 있으며, 매우 큰 데이터 세트를 학습 한 후 API의 함수를 사용하여 모델을 파일로 저장했습니다. 나중에, 일부 예측을하기 위해 파일에서로드를 시도했지만 svm.svm_predict 함수를 호출 할 때마다 NullPointerException이 계속 발생합니다. 코드가 더 작은 모델 파일에서는 작동하지만이 큰 세트에서는 계속 실패 할 수 있습니다. ; 모델은 null이 아닌 -Java libSVM로드 된 모델의 NullPointerException

Exception in thread "main" java.lang.NullPointerException 
    at libsvm.Kernel.dot(svm.java:213) 
    at libsvm.Kernel.k_function(svm.java:232) 
    at libsvm.svm.svm_predict_values(svm.java:2349) 
    at libsvm.svm.svm_predict(svm.java:2406) 
    at com.svm.SVM.predict(...) 
    at com.svm.SVM.main(...) 
이것에 대해

이상한 일이 내가 확률과 SVM의 액세스 다른 요소를 인쇄 할 수 있다는 것입니다 : 여기에 전체 오류 메시지입니다 그러나 주어진 벡터의 결과를 예측하려고 할 때마다 충돌이 발생합니다. 어떤 아이디어?

답변

1

테스트 데이터에는 벡터의 각 부품에 대한 데이터가 있어야합니다. 나는. - 가장 큰 훈련 견본이 벡터에 105 개의 부분을 갖는다면, 각 시험 벡터는 105 개의 부분을 가져야한다. 주어진 테스트 벡터의 15 개 부분 만 가지고 있다고하더라도 다른 90 개 요소로 채울 필요가 있습니다. 적절한 크기의 배열을 할당하지 않으면 libSVM은 예측을 위해 제공된 테스트 데이터 배열 외부의 요소에 액세스하려고 시도합니다.