Caffe練習1:training LeNet on MNIST with Caffe/LeNetで手書き文字セットを認識Mnist---byバナナマロディ
この実験は入門するのが一番よくて、とても楽で、作者が書いた脚本を実行すればいいです.
公式サイトのリンク:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
この実験に従って、caffeの使用の流れを観察することができて、深く入り込んで、作者が書いたshellスクリプトがどんなことをしたかを見ることができます.
次に、簡単な分析を行います.
1まずデータセットを準備する
次のコマンドを実行します.$CAFFE_ROOTとはcaffeがインストールしたディレクトリのことで、例えば私のは/home/sloanqin/caffe-master/
この2つのスクリプトを見てみましょう.
1.1実行スクリプトget_mnist.sh:
公式サイトのリンク:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
この実験に従って、caffeの使用の流れを観察することができて、深く入り込んで、作者が書いたshellスクリプトがどんなことをしたかを見ることができます.
次に、簡単な分析を行います.
1まずデータセットを準備する
次のコマンドを実行します.$CAFFE_ROOTとはcaffeがインストールしたディレクトリのことで、例えば私のは/home/sloanqin/caffe-master/
cd $CAFFE_ROOT
./data/mnist/get_mnist.sh // mnist
./examples/mnist/create_mnist.sh // mnist lmdb
この2つのスクリプトを見てみましょう.
1.1実行スクリプトget_mnist.sh:
get_mnist.sh :
<pre name="code" class="plain"># This scripts downloads the mnist data and unzips it.
DIR="$( cd "$(dirname "$0")" ; pwd -P )"
cd $DIR
echo "Downloading..."
wget --no-check-certificate http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
wget --no-check-certificate http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
wget --no-check-certificate http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
wget --no-check-certificate http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
echo "Unzipping..."
gunzip train-images-idx3-ubyte.gz
gunzip train-labels-idx1-ubyte.gz
gunzip t10k-images-idx3-ubyte.gz
gunzip t10k-labels-idx1-ubyte.gz
# Creation is split out because leveldb sometimes causes segfault
# and needs to be re-created.
echo "Done."
: , ;
train-images-idx3-ubyte.gz train-labels-idx1-ubyte.gz t10k-images-idx3-ubyte.gz t10k-labels-idx1-ubyte.gz
2 定义caffe的网络结构:.prototxt 文件
caffe的网络结构定义在后缀名为.prototxt的文件中,我们根据自己的需要定义自己的网络结构;
在这个实验中,我们使用作者已经为我们定义好的lenet网络结构,大家可以在下面的目录中找到该文件:
$CAFFE_ROOT/examples/mnist/lenet_train_test.prototxt
在我的电脑上,目录是/home/sloanqin/examples/mnist/lenet_train_test.prototxt
在后续的工作中,定义好自己的网络结构是最关键的,直接决定了性能,这里我们就不多说了;
3 定义caffe运算的时候的一些规则:solver.prototxt 文件
该文件在下面的目录中:
$CAFFE_ROOT/examples/mnist/lenet_solver.prototxt
文件内容如下:作者给出了英文注释,我再给出中文的注释
中国語注釈バージョン:# The train/test net protocol buffer definition net: "examples/mnist/lenet_train_test.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of MNIST, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. test_iter: 100 # Carry out testing every 500 training iterations. test_interval: 500 # The base learning rate, momentum and the weight decay of the network. base_lr: 0.01 momentum: 0.9 weight_decay: 0.0005 # The learning rate policy lr_policy: "inv" gamma: 0.0001 power: 0.75 # Display every 100 iterations display: 100 # The maximum number of iterations max_iter: 10000 # snapshot intermediate results snapshot: 5000 snapshot_prefix: "examples/mnist/lenet" # solver mode: CPU or GPU solver_mode: GPU
<pre name="code" class="plain"># The train/test net protocol buffer definition net: "examples/mnist/lenet_train_test.prototxt" # test_iter specifies how many forward passes the test should carry out. # In the case of MNIST, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. test_iter: 100 // // :GPU , , batch // :test batch size 100, 100 // st_iter=100, 100*100=10000 // ,test_iter : # Carry out testing every 500 training iterations. test_interval: 500 // 500 , # The base learning rate, momentum and the weight decay of the network. base_lr: 0.01 // 0.01 momentum: 0.9 weight_decay: 0.0005 # The learning rate policy lr_policy: "inv" gamma: 0.0001 power: 0.75 # Display every 100 iterations display: 100 // 100 , # The maximum number of iterations max_iter: 10000 // # snapshot intermediate results snapshot: 5000 // , 5000 , , snapshot_prefix: "examples/mnist/lenet" # solver mode: CPU or GPU solver_mode: GPU // CPU GPU
4 执行命令进行训练最后一步就是执行脚本开始训练:
このスクリプトを開くと、特に簡単な行が表示されます.cd $CAFFE_ROOT ./examples/mnist/train_lenet.sh
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
この行のコードの意味:./build/tools/caffeディレクトリの下のtrain関数を呼び出します.train関数の入力パラメータはsolver.prototxtファイルのパスです.--solver=examples/mnist/lenet_solver.prototxt
5結果
実行中、testにカードできる精度が上昇しています.実行が終了すると、モデルファイルが生成されます:lenet_iter_10000.caffemodel
もう1つのファイルはsnapshotが保存しています:lenet_iter_10000.solverstate
テキストリンク:http://write.blog.csdn.net/postedit/49147935