ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

MATLABコミュのmexで処理中にエラーが出ずに実行が進まなくなります

  • mixiチェック
  • このエントリーをはてなブックマークに追加
サポートベクターマシン(SVM)を使った従来法の追実験中なのですが,実行が止まってしまい,困っています.原因やアドバイスなど,思いつく方はいただけますでしょうか??

状況:
大量のデータをSVMで学習させています.SVMはC言語で書かれたものを使っています.同じデータに対して,違うラベルを用いて数十回学習させるのですが,1回1回の学習はmexで行い,それをMATLABの方でfor文で繰り返しています.(なので,fprintfを使って進捗状況を確認しています.)
一見,何事もなく実行されているのですが,進捗が途中で止まってしまいます.
止まるタイミングは,学習させるデータ量と関係があるようなので,メモリが関係していると思うのですが,エラーは一切出ません.タスクマネージャを見ても,CPUとメモリの使用状況は極めて正常です(メモリは変化せず,CPUはコア2つなら50%,コア4つなら25%です).
1回の学習は長くても1分以内に終了しますが,プログラムは23時間程度とまったままなので,「学習に時間がかかっている」可能性はないと思います.
また,Ctrl+Cで止められないため,mexを処理中と考えられます.

環境(SVM):
LIBSVM (http://www.csie.ntu.edu.tw/~cjlin/libsvm/)

環境(PC1とMATLABバージョン):
Windows XP Pro. x64 SP2
Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz
2.66 GHz, 3.93 GB RAM
MATLAB 7.5.0 (R2007b)

環境(PC2とMATLABバージョン):
Windows XP Pro. x64 SP2
Intel(R) Xeon(R) CPU W3520 @ 2.67GHz
2.67 GHz, 7.98 GB RAM
MATLAB 7.8.0 (R2009a)

学習データサイズとループ回数:
PC1:
960x29000 (double sparce)
MAT-fileに保存したときの容量は8.98MB
39回目の学習で停止中
PC2:
960x45000 (double sparce)
MAT-fileに保存したときの容量は12.1MB
20回目の学習で停止中
(960x145000で実行したときは3回目の学習で停止)

コメント(5)

> 定期的にpack
ぜひしたいのですが,R2007*ではm-fileでpackを使えないようなのです.warningが出ます.もしかして,実はwarningを出しながらpackを実行してくれているのでしょうか・・・?

> メモリリーク
そこまでコードを解析していませんでした(汗.アドバイス,ありがとうございます.
ここで投稿する前に調べたとき,サイトにも,動的に確保したメモリは明示的に解放したほうがよい,とありました.一手段として,時間があるときに試してみます.
Cは苦手ですが...

> 条件が悪いと振動解
> 最大繰り返し数を下げて
確かに・・・凸二次計画問題なので局所解はあり得ませんが,振動解はあり得る・・・のでしょうか?
これで解決すれば万々歳ですね.ありがとうございます!

> 手動でfigを出したり消したり
figure関係は,私もうんざりです(苦笑
絶対に触らないようにしてますが,うっかりいじってしまった場合は様子見ですね.

異常かどうか確認するのに時間がかかりますが,進展があれば報告します.
またよろしくお願いいたします.
昨日の夕方,収束条件を緩和させて実行し,本日はお休みです.明日,無事に終了していると良いのですが・・・

> save&load
言われてみれば,そうですね.またダメだったら,やってみます!

> nu-svm, RVM
できれば既存法通りやりたいところですが,nu-svmくらいは,最悪,仕方がないですね.
RVM,初めて聞きました.Relevance Vector Machineでよろしいでしょうか?調べてみます!

> 線形カーネルを御使用であれば,logistic回帰も試してみては
御存じではないです(汗.logistic回帰は「SVMの入門書で見た言葉だなぁ」という感じです...
しかも,残念ながらrbfなのです.パラメータgammaも検討する必要がありそうですね.

save&load,nu-SVM,gammaを変える,あたりをやってみたいと思います.

学習や回帰分析に関して無知な頭にいきなりSVMをぶち込んだ感じなので,大変勉強になります.
感謝です.
== 報告 ==

収束判定基準を緩めたところ,最後まで実行できました.
後の予測結果はPositive判定が一つもない,というおぞましいものでしたが…orz

一つ,先に進めたので良かったです.知識もいただくことができました.
ありがとうございます.

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

MATLAB 更新情報

MATLABのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング