【发布时间】:2014-01-23 19:44:57
【问题描述】:
我尝试在具有以下大小的数据集上训练 LS-SVM 分类器:
训练数据集:TS = 48000x12(双)
组:G = 48000x1(双)
Matlab 训练代码为:
class = svmtrain(TS,G,'method','LS',...
'kernel_function','rbf','boxconstraint',C,'rbf_sigma',sigma);
然后,我收到以下错误消息:
使用 svmtrain 时出错(第 516 行)
评估内核函数“rbf_kernel”时出错。
原因:
使用 repmat 时出错
内存不足。键入 HELP MEMORY 作为您的选项。
请注意,物理内存的大小为 4Gb,当我减小数据集训练大小时它可以工作。因此,如果有任何解决方案具有相同的数据大小,当然不增加物理内存。
【问题讨论】:
-
你的训练集中有多少个类?
-
@lejlot:
svmtrainMatlab 函数只适用于二进制分类,所以我只有两个类。 -
您或许可以在 Scala 中为 SVM 使用 Breeze。我不喜欢任何东西的不可扩展的解决方案,而且 Matlab 总是无法扩展。我建议你进入spark.incubator.apache.org/docs/latest/mllib-guide.html
-
不确定是否可行,但也许可以使用较小的数据类型,例如我会尝试
Single或int8。当然,请确保您的记忆中没有不必要的东西。另请确认您正在运行 64 位 matlab。请参阅here 为什么。 -
@DennisJaheruddin:感谢您的评论。是的,我正在运行 64 位 Matlab,即使我尝试使用
single数据类型为double的数据类型,问题也是一样的。
标签: machine-learning classification svm matlab