在具有<= 1 MB RAM和<= 10 MB ROM的设备上运行支持向量机内核是否可行?

时间:2019-05-31 22:41:42

标签: python c performance memory-management svm

一些初步测试表明,我正在从事的项目可能会受益于使用支持向量机解决棘手的问题。我担心的是将会存在主要的内存限制。原型和测试是通过scikit-learn在python中完成的。最终版本将以C语言定制编写。模型将经过预训练,并且只有决策函数会存储在最终产品上。将有<= 10个训练功能,而<= 5000个训练数据点。我一直在阅读有关SVM内存的杂物,并且我知道默认的sklearn内存缓存为200 MB。 (比我现有的大得多)这可行吗?我知道有多种不同类型的SVM内核,并且内核也可以自定义编写。如果有的话,这可能与哪些内核类型一起工作?

1 个答案:

答案 0 :(得分:2)

如果空间有限,您可能要跳过scikit并自己实现数学。这样,您可以按自己选择的结构循环浏览数据。内存需求取决于您所使用的SVM的类别。一次遍历数据就可以完成两类线性SVM,并且在累积乘积和时一次只考虑一次观察,因此命令逻辑将比数据需求占用更多的空间。

如果您需要将整个数据集保留在内存中以进行多次遍历,则浮点数“仅”为5000 * 10 * 8字节,即1Mb的400k,这可能足以容纳做你的操作。还请考虑一个缓慢的训练过程,每次通过时都要重新读取数据,因为这样可以将400k减少到微不足道的时间,而这只是墙上时钟的时间。

如果您查找可用的SVM实现并根据需要更改I / O部分,那么所有这些都在您的控制之下。

有帮助吗?