ようやく学習のお話になります。
実行モジュール
いきなり実行モジュールのお話から始めます。
学習を行うためには「caffe.exe」を使用します。
引数
「caffe.exe」のシンタックスは以下のようになっています。
caffe <command> <args>
今までのツール類とは、ちょっと表現が違ってます ^^;
command
ここでは、処理の種類を指定します。
command | 意味 | 使用頻度 |
---|---|---|
train | トレーニングを行います | 高 |
test | テストを行います | 中 |
device_query | GPUの情報を表示します | 低 |
time | ベンチマークを実行します | 低 |
ここでは「train」についてのみ説明します。
(後は知らなくても問題なし)
args
代表的な引数は以下の通りです。
(全てを知りたい人は「caffe -help」を実行)
args | 意味 | 設定例 |
---|---|---|
-solver | ソルバファイルを指定します | -solver solver.prototxt |
-snapshot | 学習の続きを行います | -snapshot train_100000.solverstate |
-weights | 他で作成した学習モデルに追加して学習させます | -weights train_10000.caffemodel |
これだけ知っていればOKです。
「-snapshot」と「-weights」は、「-solver」も一緒に指定する必要があります。
なお、指定したそれぞれのファイルの中身については、また別の機会に説明します。
(そこに設定するモデルファイル等についても)
以下では、「-solver」のみを指定したときの動作を説明していきます。
実行時のログ
まずソルバファイルの内容が表示されます。
※あっという間に流れていきます
次にモデルファイルの内容が表示されます。
モデルファイルとは、ニューラルネットの各レイヤに何を設定するか、またパラメータにどういった値を設定するかを指定したファイルになります。
※これも、あっという間に流れていきます
モデルファイルは、トレーニング用とテスト用の2種類表示されます。
ここで、たとえばGPUのメモリが足らないなど、エラーになるとメッセージが表示され、終了します。
その場合はエラーの対処(GPUメモリが足らないなら、画像ファイルを小さくしたり、バッチサイズを小さくしたり)を行います。
これが終わると、いよいよ学習経過のログが表示されます。
例えばこんな感じのログが一定間隔で出力されます。
I0318 15:49:36.599722 3487 solver.cpp:408] Test net output #0: accuracy = 0.0753
I0318 15:49:36.599763 3487 solver.cpp:408] Test net output #1: loss = 2.39124 (* 1 = 2.39124 loss)
これはある程度トレーニングしたところで、「どれどれ、精度はどのくらい上がったかな?」とテストをした結果のログになります。
(もちろん、その間隔等は自分で設定するのですが)
「accuracy」は正解率で、1に近ければ近いほどいいです。
「loss」は予測とのズレになり、小さければ小さいほどいいです。
また、こちらも一定間隔で、評価で使用する学習モデルデータ(出力ファイル)を、ソルバファイルで指定したファイル名で出力します。
設定した名前に学習した回数が付加され「caffe_alexnet_train_iter_450000.caffemodel」といった感じになります。
(snapshot_prefixで「caffe_alexnet_train」を指定した場合)
おまけ
GPUを使う使わないにも寄りますが、画像のサイズやモデルの設定で、実行時間は相当変わります。
まずは短いモデルで実行してGPUメモリでエラーにならないかを確認して、それから本当に使用したいモデルで学習するのがよいかと思います。
関連記事
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(1)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(2)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(3)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(5)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(6)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(7)
C++プログラマがWindows上でCaffeを使ってDeep Learningするお話(8)