MATLAB';s svmtrain:保存支持向量索引而不是支持向量本身

MATLAB';s svmtrain:保存支持向量索引而不是支持向量本身,matlab,memory,machine-learning,svm,Matlab,Memory,Machine Learning,Svm,我正在研究一个机器学习问题,这需要我使用多个支持向量机。它工作得比较好;然而,问题是每个支持向量机的支持向量机的数量往往很大(~2000),输入特征的数量大约为50000。我需要大约100台支持向量机 在我的笔记本电脑上运行它会很快耗尽所有可用内存;我认为这是因为svmtrain创建了一个SVM,它保存(即有另一个副本)所有支持向量。由于我保留了原始的训练数据,我想知道是否有一种方法可以指示它将索引保存到这些支持向量,这样会占用更少的内存?还是另一种减少每个SVM所需内存量的方法 svmtrai

我正在研究一个机器学习问题,这需要我使用多个支持向量机。它工作得比较好;然而,问题是每个支持向量机的支持向量机的数量往往很大(~2000),输入特征的数量大约为50000。我需要大约100台支持向量机


在我的笔记本电脑上运行它会很快耗尽所有可用内存;我认为这是因为
svmtrain
创建了一个SVM,它保存(即有另一个副本)所有支持向量。由于我保留了原始的训练数据,我想知道是否有一种方法可以指示它将索引保存到这些支持向量,这样会占用更少的内存?还是另一种减少每个SVM所需内存量的方法

svmtrain
创建
SVMStruct
对象,该对象将支持向量的索引存储在
SupportVectorIndicates
字段中。因此,只需将该变量的值存储在某个容器中,然后释放模型的其余部分

符合

SupportVectorIndicates—根据AutoScale参数,指定训练中的行(训练数据)的索引向量,这些行在数据规范化后被选为支持向量


我不知道你的问题的确切解决办法,但我可以提出一个替代方案。一旦你的svm被训练和使用并且不再需要,你可以通过调用“清除”来释放它的内存。这样,释放的内存可以分配给训练和存储下一个svm实例。这样计算机就不会存储任何不必要的数据。@MohitJain:当然可以,但我需要保留支持向量机(它们必须一起使用),谢谢,不过如果我这样做,有没有办法从索引中快速重新创建支持向量机结构?