2013-06-11 8 views
0

에서 나는 matlab에ERROR SVMCLASSIFY MATLAB은 memery

이 스크립트가

구조체 = svmTraining (feature_train, class_final_train);

svmclassify (struct, feature_test);

5 초 후에 다음 메시지가 나타납니다.

??? ==> svmclassify 117을 사용하는 중 오류가 발생했습니다. 분류 중에 오류가 발생했습니다. 메모리가 부족합니다. 옵션으로 HELP MEMORY를 입력하십시오.

도움말 나, 감사

+0

근무 뭔가? 인터넷 검색처럼? 아니면 다른 것? – Nunser

+0

물론, 문제는 해결하지 못했습니다 .... 이미지의 각 픽셀을 18 개의 이미지로 분류해야합니다. 내 훈련 세트에는 약 900.000 개의 행이 있으며 각 행에는 5 개의 double이 있습니다. 5 초 후 svmclassify 함수가이 예외를 throw합니다 ... –

답변

0

오류 당신이 분류를 수행하기 위해 컴퓨터에 사용할 수있는 충분한 메모리가없는 것을 의미한다.

먼저, 새로 시작한 MATLAB을 사용하여 명령을 반복하십시오. 필요한 것보다 더 많은 변수를 만들지 않고 다른 응용 프로그램을 실행하지 마십시오.

그래도 작동하지 않는다면 본질적으로 더 작은 데이터 세트로 작업하거나 컴퓨터에 더 많은 메모리를 확보해야합니다.

+0

이 작업을 수행했지만 문제가 남아 있습니다. 해결책이 있습니까? 내 훈련 세트에 약 200,000 개의 행이 있습니다. 감사. –

+0

메모리가 약간만 부족한 경우 문제를 메모리로 집어 넣기 위해 찾을 수있는 트릭이있을 수 있지만 실제 솔루션은 작은 데이터 세트를 사용하거나 컴퓨터에 더 많은 메모리를 사용하는 것입니다. –

1

테스트 데이터의 하위 집합에서 svmclassify() 함수를 호출하여 동일한 문제를 직접 해결할 수있었습니다. 당신이 테스트 데이터의 큰 배열을주는 경우 어떤 이유로 그것은 엄청난 양의 메모리를 필요로합니다. 그래서 여기

당신은 적어도 그것을 해결하는 것을 시도 적이 나를

numExemplars = size(testData,1); 
chunkSize = 1000; 
j=1:chunkSize:numExemplars; 
classifications = zeros(numExemplars,1); %initialize 
for i=1:length(j)-1; 
    index1 = j(i); 
    index2 = j(i+1)-1; 
    fprintf('classifying exemplars %d to %d\n', index1, index2); 
    chunk = testData(index1:index2,:); 
    classifications(index1:index2) = svmclassify(SVM_struct,chunk); 
end 
% last bit of data 
chunk = testData(j(end):numExemplars,:); 
classifications(j(end):numExemplars) = svmclassify(SVM_struct,chunk);