下丸子のコネクショニスト

機械学習、人工知能などの話題について触れます。

Caffe+AlexNetでImageNet2012を学習してみた (2)

前回は下記の記事でImageNetのデータを用意したので、今回は学習するところをレポートする。

Caffe+AlexNetでImageNet2012を学習してみた (1) - 下丸子のコネクショニスト

 

データの整形・変換

前回の続きに相当するが、データの整形・caffeで使う形式への変換を行う。

/caffe/examples/imagenet/create_imagenet.sh

の中にある項目を下記のように変更し、実行した。

ここではcaffeのディレクトリ、imagenetのディレクトリを指定している(この場合、caffeはホームディレクトリ直下にあることが前提)。

EXAMPLE=~/caffe/examples/imagenet
DATA=~/caffe/data/ilsvrc12
TOOLS=~/caffe/build/tools
TRAIN_DATA_ROOT=~/data/imagenet/train/
VAL_DATA_ROOT=~/data/imagenet/val/

(中略)

RESIZE=true

 

次に平均画像を計算する。

/caffe/examples/imagenet/make_imagenet_mean.sh

を開き、上記と同じくパスを変更するとともに、

ilsvrc12_train_leveldbをilsvrc12_train_lmdbに変更して実行した。

 

CaffeNetの学習

まずはAlexNetではなく、CaffeNetを学習してみる。

 

~/caffe

のディレクトリに移動し、下記のコマンドを実行。

./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt
(中略)
I0311 19:31:31.396245 4896 data_layer.cpp:195] Restarting data prefetching from start.
I0311 19:31:31.538151 3872 solver.cpp:315] Test net output #0: accuracy = 0.001
I0311 19:31:31.538208 3872 solver.cpp:315] Test net output #1: loss = 7.14724 (* 1 = 7.14724 loss)
I0311 19:31:32.839386 3872 solver.cpp:209] Iteration 0, loss = 7.43302
I0311 19:31:32.839438 3872 solver.cpp:224] Train net output #0: loss = 7.43302 (* 1 = 7.43302 loss)
I0311 19:31:32.839467 3872 solver.cpp:445] Iteration 0, lr = 0.01
I0311 19:31:59.389771 3872 solver.cpp:209] Iteration 20, loss = 7.15628
I0311 19:31:59.389821 3872 solver.cpp:224] Train net output #0: loss = 7.15628 (* 1 = 7.15628 loss)
I0311 19:31:59.389833 3872 solver.cpp:445] Iteration 20, lr = 0.01
I0311 19:32:25.964386 3872 solver.cpp:209] Iteration 40, loss = 6.95787
I0311 19:32:25.964555 3872 solver.cpp:224] Train net output #0: loss = 6.95787 (* 1 = 6.95787 loss)
I0311 19:32:25.964576 3872 solver.cpp:445] Iteration 40, lr = 0.01
(以下略)

 

無事に学習が始まった。

仕事用のグラボだとメモリが小さすぎてバッチサイズを変えないといけなかったが、

GTX 970ならパラメータを変えなくても学習はできることが分かった。

(GTX 970はメモリ上の問題をかかえているとのことなので、非常に心配していた…)

気になるのは学習速度だが、上記の通り20秒/20Ite.くらいのようだ。

これが果たして早いのか?遅いのか?

GTX 970特有のアクセス速度が遅いメモリ領域を使わざるを得ないなら、

学習速度が低下しているはずだ。

 

次回はCaffeNetの学習速度と精度に関して検証していく。