[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[ノート>ノート/ノート]]
*Caffeのデモプログラムを試してみる (2014-12-24〜 ) [#n552aaf2]
Titanのインストール、Caffeのコンパイルが終わったので、元ページに載っているデモプログラムを試してみる。
**MNISTデータを試してみる。 [#dae09f22]
出所はBerkeleyのこのページ [[Training LeNet on MNIST with Caffe:http://caffe.berkeleyvision.org/gathered/examples/mnist.html]] にある通り。
cd $CAFFE_ROOT
./data/mnist/get_mnist.sh データを持ってくる
./examples/mnist/create_mnist.sh データの準備
./examples/mnist/train_lenet.sh 学習させる
結果はこんな風になった。
I1219 08:37:12.889474 32546 solver.cpp:247] Iteration 10000, Testing net (#0)
I1219 08:37:13.882843 32546 solver.cpp:298] Test net output #0: accuracy = 0.9912
I1219 08:37:13.882863 32546 solver.cpp:298] Test net output #1: loss = 0.0281126 (* 1 = 0.0281126 loss)
I1219 08:37:13.882869 32546 solver.cpp:233] Optimization Done.
I1219 08:37:13.882874 32546 caffe.cpp:121] Optimization Done.
***中身を見てみる [#wa4374a0]
起動用スクリプト train_lenet.sh の内容は
#!/usr/bin/env sh
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
要するに、caffeプログラムを、trainモードで、かつsolverとして lenet_solver.prototxt ファイルの内容を参照して、起動している。
----
prototxtファイルのパラメタの書き方などは、ファイル caffe.prototxt にある通りだが、
それをざっと整理してみたのが [[ノート/Caffeのモジュール記述抜粋(caffe.prototxt)]] である。
----
上記shファイルで参照されている lenet_solver.prototxt の内容は <<<lenet_solver.prototxt>>>
net: "examples/mnist/lenet_train_test.prototxt"
test_iter: 100 test時に(batch size = 100 を)100回繰り返す(全体で10000データ)
test_interval: 500 testは学習500回ごと間隔で行う
base_lr: 0.01 ベースの学習レートは0.01に設定
momentum: 0.9 モーメンタムは0.9
weight_decay: 0.0005 重みの遅延は0.0005
lr_policy: "inv" 学習レートのポリシーはinvにする
gamma: 0.0001 gammaは0.0001
power: 0.75 powerは0.75
display: 100 結果表示は100繰り返しごと
max_iter: 10000 最大の繰り返し数は10000回まで
snapshot: 5000 途中のスナップショットは5000回おき
snapshot_prefix: "examples/mnist/lenet" スナップショットのファイルをここへ置く
solver_mode: GPU solverはGPUを使う
この1行目の net: で参照されているネットの構造は <<<&ref(lenet_train_test.prototxt.txt,,.lenet_train_test.prototxt);>>> にある通り
-mnist DATA入力層で、上に(というよりLMDBのデータの中に)dataとlabelの2つのblobを持つ。~
data部分はLMDBバックエンドのmnist_train_lmdbから読み込み、batch_size=64とし、0.00390625倍(1/256)にスケール。TRAINフェーズの時のみ利用。
-mnist DATA入力層で、上にdataとlabelの2つのblobを持つ。~
data部分はLMDBバックエンドのmnist_test_lmdbから読み込み、batch_size=100とし、0.00390625倍(1/256)にスケール。フェーズの時のみ利用。
-conv1 CONVOLUTION層で、下のblobはdata、上はconv1。convolutionのパラメタは出力20個、カーネルサイズ=5、1ずつ移動、重みフィルタはxavier、バイアスフィルタは定数。
-pool1 POOLING層で、下のblobはconv1、上がpool1。poolingのパラメタはMAX、カーネルサイズ=2、2ずつ移動。
-conv2 CONVOLUTION層で、下のblobはpool1、上はconv2。convolutionのパラメタは出力50個、カーネルサイズ=5、1ずつ移動、重みフィルタはxavier、バイアスフィルタは定数。
-pool2 POOLING層で、下のblobはconv2、上はpool2。poolingのパラメタはMAX、カーネルサイズ=2、2ずつ移動。
-ip1 INTTER_PRODUCT層で、下のblobはpool2、上はip1。inner_productのパラメタは出力500個、重みフィルタはxavier、バイアスフィルタは定数。
-relu1 RELU層で、下のblobはip1、上もip1。
-ip2 INNER_PRODUCT層で、下のblobがip1、上はip2。inner_productのバラメタは出力10個、重みフィルタはxavier、バイアスフィルタは定数。
-accuracy ACCURACY層で、下のblobがip2とlabel、上のblobはaccuracy。TESTフェーズのみに挿入。
-loss SOFTMAX_LOSS層で、下のblobはip2とlabel、上のblobはloss。
となっている。図に書くと、
&ref(mnist1.jpg);
------
(2015-01-13) prototxtファイルからブロック図を生成するプログラムがあるのを発見。
下の図の作り方は、
> python $(caffe_root)/python/draw_net.py $(caffe_root)/examples/mnist/lenet_train_test.prototxt output.png
でPNGファイル output.png が生成される。
| lenet_train_test.prototxt | mnist_autoencoder.prototxt |
|&ref(lenet_train_test.png,,50%); | &ref(mnist_autoencoder.png,,50%);|
ついでに、同じexamples/mnistディレクトリにあった mnist_autoencoder.prototxt をブロック図にしたものが右側。
-----
**CIFAR10 [#n67c4802]
-[[Alex’s CIFAR-10 tutorial, Caffe style:http://caffe.berkeleyvision.org/gathered/examples/cifar10.html]]
-[[KrizhevskyのCIFAR-10のページ:http://www.cs.toronto.edu/~kriz/cifar.html]]
-[[Cuda-convnetの(Cifer10の)Methodologyページ:https://code.google.com/p/cuda-convnet/wiki/Methodology]]
quickの最後の方のコンソール
I1226 10:30:28.663301 13513 solver.cpp:247] Iteration 5000, Testing net (#0)
I1226 10:30:30.767330 13513 solver.cpp:298] Test net output #0: accuracy = 0.7589
I1226 10:30:30.767351 13513 solver.cpp:298] Test net output #1: loss = 0.724786 (* 1 = 0.724786 loss)
I1226 10:30:30.767360 13513 solver.cpp:233] Optimization Done.
I1226 10:30:30.767366 13513 caffe.cpp:121] Optimization Done.
fullの最後の方のコンソール
I1226 11:43:40.781108 24261 solver.cpp:247] Iteration 70000, Testing net (#0)
I1226 11:43:42.959712 24261 solver.cpp:298] Test net output #0: accuracy = 0.8144
I1226 11:43:42.959734 24261 solver.cpp:298] Test net output #1: loss = 0.533652 (* 1 = 0.533652 loss)
I1226 11:43:42.959743 24261 solver.cpp:233] Optimization Done.
I1226 11:43:42.959749 24261 caffe.cpp:121] Optimization Done.
| cifar10_quick.png | cifar10_full_train_test.png |
| &ref(cifar10_quick.png,,50%); | &ref(cifar10_full_train_test.png,,50%); |
**その他の参考サイト [#u5847793]
-[[Deep Learningで猫の品種識別:http://qiita.com/wellflat/items/0b6b859bb275fd4526ed]]
-[[大規模画像データセット:http://d.hatena.ne.jp/n_hidekey/20120115/1326613794]]
--------------------------------
[[Caffeのデモプログラムを試してみる2>YAMA/ノート/Caffeのデモプログラムを試してみる2 (2016-1-17)]]
終了行:
[[ノート>ノート/ノート]]
*Caffeのデモプログラムを試してみる (2014-12-24〜 ) [#n552aaf2]
Titanのインストール、Caffeのコンパイルが終わったので、元ページに載っているデモプログラムを試してみる。
**MNISTデータを試してみる。 [#dae09f22]
出所はBerkeleyのこのページ [[Training LeNet on MNIST with Caffe:http://caffe.berkeleyvision.org/gathered/examples/mnist.html]] にある通り。
cd $CAFFE_ROOT
./data/mnist/get_mnist.sh データを持ってくる
./examples/mnist/create_mnist.sh データの準備
./examples/mnist/train_lenet.sh 学習させる
結果はこんな風になった。
I1219 08:37:12.889474 32546 solver.cpp:247] Iteration 10000, Testing net (#0)
I1219 08:37:13.882843 32546 solver.cpp:298] Test net output #0: accuracy = 0.9912
I1219 08:37:13.882863 32546 solver.cpp:298] Test net output #1: loss = 0.0281126 (* 1 = 0.0281126 loss)
I1219 08:37:13.882869 32546 solver.cpp:233] Optimization Done.
I1219 08:37:13.882874 32546 caffe.cpp:121] Optimization Done.
***中身を見てみる [#wa4374a0]
起動用スクリプト train_lenet.sh の内容は
#!/usr/bin/env sh
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
要するに、caffeプログラムを、trainモードで、かつsolverとして lenet_solver.prototxt ファイルの内容を参照して、起動している。
----
prototxtファイルのパラメタの書き方などは、ファイル caffe.prototxt にある通りだが、
それをざっと整理してみたのが [[ノート/Caffeのモジュール記述抜粋(caffe.prototxt)]] である。
----
上記shファイルで参照されている lenet_solver.prototxt の内容は <<<lenet_solver.prototxt>>>
net: "examples/mnist/lenet_train_test.prototxt"
test_iter: 100 test時に(batch size = 100 を)100回繰り返す(全体で10000データ)
test_interval: 500 testは学習500回ごと間隔で行う
base_lr: 0.01 ベースの学習レートは0.01に設定
momentum: 0.9 モーメンタムは0.9
weight_decay: 0.0005 重みの遅延は0.0005
lr_policy: "inv" 学習レートのポリシーはinvにする
gamma: 0.0001 gammaは0.0001
power: 0.75 powerは0.75
display: 100 結果表示は100繰り返しごと
max_iter: 10000 最大の繰り返し数は10000回まで
snapshot: 5000 途中のスナップショットは5000回おき
snapshot_prefix: "examples/mnist/lenet" スナップショットのファイルをここへ置く
solver_mode: GPU solverはGPUを使う
この1行目の net: で参照されているネットの構造は <<<&ref(lenet_train_test.prototxt.txt,,.lenet_train_test.prototxt);>>> にある通り
-mnist DATA入力層で、上に(というよりLMDBのデータの中に)dataとlabelの2つのblobを持つ。~
data部分はLMDBバックエンドのmnist_train_lmdbから読み込み、batch_size=64とし、0.00390625倍(1/256)にスケール。TRAINフェーズの時のみ利用。
-mnist DATA入力層で、上にdataとlabelの2つのblobを持つ。~
data部分はLMDBバックエンドのmnist_test_lmdbから読み込み、batch_size=100とし、0.00390625倍(1/256)にスケール。フェーズの時のみ利用。
-conv1 CONVOLUTION層で、下のblobはdata、上はconv1。convolutionのパラメタは出力20個、カーネルサイズ=5、1ずつ移動、重みフィルタはxavier、バイアスフィルタは定数。
-pool1 POOLING層で、下のblobはconv1、上がpool1。poolingのパラメタはMAX、カーネルサイズ=2、2ずつ移動。
-conv2 CONVOLUTION層で、下のblobはpool1、上はconv2。convolutionのパラメタは出力50個、カーネルサイズ=5、1ずつ移動、重みフィルタはxavier、バイアスフィルタは定数。
-pool2 POOLING層で、下のblobはconv2、上はpool2。poolingのパラメタはMAX、カーネルサイズ=2、2ずつ移動。
-ip1 INTTER_PRODUCT層で、下のblobはpool2、上はip1。inner_productのパラメタは出力500個、重みフィルタはxavier、バイアスフィルタは定数。
-relu1 RELU層で、下のblobはip1、上もip1。
-ip2 INNER_PRODUCT層で、下のblobがip1、上はip2。inner_productのバラメタは出力10個、重みフィルタはxavier、バイアスフィルタは定数。
-accuracy ACCURACY層で、下のblobがip2とlabel、上のblobはaccuracy。TESTフェーズのみに挿入。
-loss SOFTMAX_LOSS層で、下のblobはip2とlabel、上のblobはloss。
となっている。図に書くと、
&ref(mnist1.jpg);
------
(2015-01-13) prototxtファイルからブロック図を生成するプログラムがあるのを発見。
下の図の作り方は、
> python $(caffe_root)/python/draw_net.py $(caffe_root)/examples/mnist/lenet_train_test.prototxt output.png
でPNGファイル output.png が生成される。
| lenet_train_test.prototxt | mnist_autoencoder.prototxt |
|&ref(lenet_train_test.png,,50%); | &ref(mnist_autoencoder.png,,50%);|
ついでに、同じexamples/mnistディレクトリにあった mnist_autoencoder.prototxt をブロック図にしたものが右側。
-----
**CIFAR10 [#n67c4802]
-[[Alex’s CIFAR-10 tutorial, Caffe style:http://caffe.berkeleyvision.org/gathered/examples/cifar10.html]]
-[[KrizhevskyのCIFAR-10のページ:http://www.cs.toronto.edu/~kriz/cifar.html]]
-[[Cuda-convnetの(Cifer10の)Methodologyページ:https://code.google.com/p/cuda-convnet/wiki/Methodology]]
quickの最後の方のコンソール
I1226 10:30:28.663301 13513 solver.cpp:247] Iteration 5000, Testing net (#0)
I1226 10:30:30.767330 13513 solver.cpp:298] Test net output #0: accuracy = 0.7589
I1226 10:30:30.767351 13513 solver.cpp:298] Test net output #1: loss = 0.724786 (* 1 = 0.724786 loss)
I1226 10:30:30.767360 13513 solver.cpp:233] Optimization Done.
I1226 10:30:30.767366 13513 caffe.cpp:121] Optimization Done.
fullの最後の方のコンソール
I1226 11:43:40.781108 24261 solver.cpp:247] Iteration 70000, Testing net (#0)
I1226 11:43:42.959712 24261 solver.cpp:298] Test net output #0: accuracy = 0.8144
I1226 11:43:42.959734 24261 solver.cpp:298] Test net output #1: loss = 0.533652 (* 1 = 0.533652 loss)
I1226 11:43:42.959743 24261 solver.cpp:233] Optimization Done.
I1226 11:43:42.959749 24261 caffe.cpp:121] Optimization Done.
| cifar10_quick.png | cifar10_full_train_test.png |
| &ref(cifar10_quick.png,,50%); | &ref(cifar10_full_train_test.png,,50%); |
**その他の参考サイト [#u5847793]
-[[Deep Learningで猫の品種識別:http://qiita.com/wellflat/items/0b6b859bb275fd4526ed]]
-[[大規模画像データセット:http://d.hatena.ne.jp/n_hidekey/20120115/1326613794]]
--------------------------------
[[Caffeのデモプログラムを試してみる2>YAMA/ノート/Caffeのデモプログラムを試してみる2 (2016-1-17)]]
ページ名: