【发布时间】:2017-09-19 07:07:53
【问题描述】:
我有一个矩阵 X,大小 40-by-60000
在编写 SVM 时,我需要形成一个线性内核:K = X'*X
当然我会得到一个错误
Requested 60000x60000 (26.8GB) array exceeds maximum array size preference.
通常是怎么做的?数据集是Mnist,所以之前肯定有人做过。在这种情况下rank(K) <= 40,我需要一种方法来存储K,然后将其传递给quadprog。
【问题讨论】:
-
欢迎来到 Stack Overflow!请注意,与 math.SE 不同,SO 不支持 TeX,正如您所注意到的,因此我将数学更改为代码格式。
-
您可以将数据转换为单曲。 Matlab 将数据存储为双精度(每个数字占用 8 个字节)。 x=single(x) 将其转换为每个数字 4 个字节,但您仍需要 13.4 GB。
标签: matlab matrix machine-learning classification svm