【发布时间】:2012-11-03 23:01:57
【问题描述】:
我正在使用 SVMLib 在 MNIST 数据集上训练一个简单的 SVM。它包含 60.000 个训练数据。但是,我有几个性能问题:训练似乎没完没了(几个小时后,我不得不手动关闭它,因为它没有响应)。我的代码很简单,我只是在数据集上调用ovrtrain,没有任何内核和任何特殊常量:
function features = readFeatures(fileName)
[fid, msg] = fopen(fileName, 'r', 'ieee-be');
header = fread(fid, 4, "int32" , 0, "ieee-be");
if header(1) ~= 2051
fprintf("Wrong magic number!");
end
M = header(2);
rows = header(3);
columns = header(4);
features = fread(fid, [M, rows*columns], "uint8", 0, "ieee-be");
fclose(fid);
return;
endfunction
function labels = readLabels(fileName)
[fid, msg] = fopen(fileName, 'r', 'ieee-be');
header = fread(fid, 2, "int32" , 0, "ieee-be");
if header(1) ~= 2049
fprintf("Wrong magic number!");
end
M = header(2);
labels = fread(fid, [M, 1], "uint8", 0, "ieee-be");
fclose(fid);
return;
endfunction
labels = readLabels("train-labels.idx1-ubyte");
features = readFeatures("train-images.idx3-ubyte");
model = ovrtrain(labels, features, "-t 0"); % doesn't respond...
我的问题:这正常吗?我在虚拟机 Ubuntu 上运行它。我应该等待更长时间吗?
【问题讨论】:
-
尝试在较小的子集上进行训练?
-
我尝试在随机的 10 个训练示例上进行训练(只要试试它是否有效)。大约需要 10 秒才能完成。我不想训练例如随机 100 或 1000 个示例,因为我认为最终模型会存在偏差......
-
当然,但是如果有 1000 个实例,您可能会更好地了解需要多少时间。你的数据的维度是多少?你试过其他参数吗?
-
如果有 1000 个样本,训练将在……呃……分钟内结束。但是我没有得到很好的准确率,只有 65-70%...
-
你有多少个变量?使用一些变量选择或降维技术可能会很好。
标签: performance machine-learning artificial-intelligence octave libsvm