【问题标题】:ERROR SVMCLASSIFY MATLAB out of memery错误 SVM 分类器 MATLAB 内存不足
【发布时间】:2013-06-07 09:30:37
【问题描述】:

我在 Matlab 中有这个脚本

struct = svmTraining(feature_train,class_final_train);

svmclassify(struct,feature_test);

但是,5 秒后出现以下消息

???在 117 处使用 ==> svmclassify 时出错 分类过程中遇到错误。 记不清。键入 HELP MEMORY 作为您的选项。

帮帮我,谢谢

【问题讨论】:

  • 你至少尝试过解决它吗?喜欢谷歌搜索?还是别的什么?
  • 当然可以,但是我没有解决问题....我必须从 18 张图像中对图像的每个像素进行分类。我的训练集有大约 900.000 行,每行有 5 双。 5秒后svmclassify函数抛出这个异常...

标签: matlab classification svm


【解决方案1】:

该错误表示您的计算机上没有足够的可用内存来执行分类。

首先,尝试使用新启动的 MATLAB 重复这些命令,不要创建任何不必要的变量,也不要运行其他应用程序。

如果这不起作用,那么基本上您将需要使用较小的数据集,或者为您的机器获取更多内存。

【讨论】:

  • 我已经这样做了,但问题仍然存在。有解决办法吗?我的训练集大约有 200000 行。谢谢。
  • 如果您只是稍微耗尽内存,那么您可能会找到一些技巧来让您的问题挤入内存,但真正的解决方案可能是使用较小的数据集,或者为您的机器获取更多内存。
【解决方案2】:

通过对测试数据的连续子集调用 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);

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2015-06-26
    • 2016-04-30
    • 2011-01-11
    相关资源
    最近更新 更多