Caffeで学習する時のモデルの設定
Caffeでは、データはblob(Binary Large OBject)というクラスで管理する。
モデルのネットワークはLayerを組み合わせて構成される。
各LayerはBlobを受け取ってBlobを出力する。
モデルの定義は[model_name]_train_test.prototxtみたいな感じのファイルに保存する。
ファイルの中身にはモデルの名前と、各Layerの構成を書く。
例 : caffe/lenet_train_test.prototxt at master · BVLC/caffe · GitHub
モデルとしては学習・評価・Deployの3種類が必要で前者2つは今は共通のファイルに書くことになっている(昔は別だった)。
適当にモデルをダウンロードしてきた時に、よく書き換えるポイントとしては、
- モデルの名前
name: "LeNet"
- Data Layerの名前(name)とデータベースの場所(data_param->source)。学習とテストで別に設定されている(includeでどちらに使うか書かれている)ので、両方書き換える。
layer { name: "mnist" type: "Data" .... data_param { source: "examples/mnist/mnist_test_lmdb" batch_size: 100 backend: LMDB } }
- 出力のクラスの数。普通は最後の全結合層(type: "InnerProduct")のnum_outputで設定
layer { name: "ip2" type: "InnerProduct" .... inner_product_param { num_output: 10 .... } }