我在并行 SVM 分类时遇到问题。在我的代码中,我重复了 3 次 SVM 的 5 倍交叉验证并平均了它的准确性。我想并行 3 次重复交叉验证的主循环,但是当我在这个循环中使用 parfor 时,程序不会使用我的 CPU 的 2 个核心的所有性能,只使用 60% 的性能!。
太感谢了
代码 :
parfor L=1:NumOFLoops;
indices = crossvalind('Kfold',QQ,NumOfKfold);
cp = classperf(QQ);
for m=1:NumOfKfold;
test = (indices == m); Train = ~test;
testI=zeros(numel(test>0),1);
TrainInputs=INPUT(Train,:);
TrainTargets=QQ(Train,:);
TestInputs=INPUT(test,:);
%% SVM Structure
svmstruct=svmtrain(TrainInputs,TrainTargets,...
'boxconstraint',Penalty,...
'kernel_function','rbf','method','QP',...
'rbf_sigma',Sigma)
TestOutputs=svmclassify(svmstruct,TestInputs,'showplot',false);
classperf(cp,TestOutputs,test);
end
Error(:,L)=cp.ErrorRate;
end
Results.ErrorRate=(sum(Error))/NumOFLoops;