2016-10-05 8 views
0

私はlibSVMを使用していますが、MATLABのsvmtrain関数はCよりも時間がかかりませんが、一般的なC言語はmatlabよりはるかに高速です。どちらの分類器も同じパラメータを取り、同数の反復回数で同じ数のSVMを返します。ここでsvmtrain関数の実行時間matlab対Cのバージョン

は、両方のコードです: Matlabの:

t1=cputime; model = svmtrain(Labels,data, '-h 0 -s 0 -c 0.025 -n 0.01 -b 1 -t 0 -d 1 -p 0.001'); t2=cputime; fprintf('Elapsed time=%.3f\n',t2-t1)

とCコード:

clock_t begin = clock(); 
    model = svm_train(&prob,&param);  
    clock_t end = clock();; 
    double time_spent = (double)(end - begin)/double(CLOCKS_PER_SEC); 
+0

「C -in一般 - MathWorks社のMATLABよりもはるかに高速ですが、 "必要ありません –

+0

https://stackoverflow.com/questions/20513071/performance-tradeoff-when-is-matlab-better-slower-than-cc –

+0

実行/ベンチマークをさらに行います。 – sascha

答えて

0

あなたが確率を得るためのオプション-b 1を使用しているとして:

  • libsvmはを使用しますは、常にデータC内でランダム
  • を分割cross-validation
  • クロスバリデーションの使用でこれらの確率を得るため
  • the default seed of 1 will be used多分時間に基づいてシード(または他を使用するMatlabのインターフェース)
    • 最初のステップとして、私はMatlabsグローバルシードを1に設定し、Cについても同じように設定します。その後、再び

私のコメントで示されているように測定し、はるかに多くのテストを行うことが賢明だろう。種が異なっていても(可能性がある)、同じコードが使用されるので、多くの多くの実行の平均は同じでなければならない

も参照してくださいthis question異なる動作のためのいくつかの他のpossibilitesが表示されている場所(あなたがSVの同じ数を得た。多分動作は内部で異なります)

関連する問題