1. 程式人生 > >《深度學習21天實戰caffe》第6天 學習筆記

《深度學習21天實戰caffe》第6天 學習筆記

這一節的學習主要是通過手寫體數字識別例程來熟悉caffe的基本使用。

首先下載MNIST資料集

$ cd data/mnist
$ ./get_mnist.sh

下載到四個檔案
訓練集(圖片)train-images-idx3-ubyte
訓練集(標籤)train-labels-idx1-ubyte
測試集(圖片)t10k-images-idx3-ubyte
測試集(標籤)t10k-labels-idx1-ubyte

下載到的檔案為二進位制檔案,可以執行下面命令來把檔案轉換為caffe能識別的檔案(LEVELDB或LMDB)

$ ./examples/mnist/create_mnist.sh

LeNet-5 模型

點選launch editor
把.prototxt檔案複製進去,按shift+enter 就可以看到模型
這裡寫圖片描述

LeNet-5的工作流程如下,輸入層是28*28的感知節點,接受原始影象。
第一層:卷積層,用20個5*5的卷積核進行特徵提取,提取出20個(28-5+1)*(28-5+1)的特徵圖送下層處理。
第二層:子取樣層,採用最大池化的方法來縮小資料規模,用2*2的輸入域,將4個數用一個最大的數來替代。
第三層:卷積層,同第一層一樣,只是這一層用了50個卷積核生成了50個特徵圖。
第四層:子取樣層,同第二層一樣。
第五層:全連線層,這一層共產生500個節點,它如同BP神經網路一樣,計算輸入向量和權重向量直接的點積,再加上一個偏置,然後將其傳遞給激勵函式(ReLU)計算。
第六層:全連線層,共有10個節點,分別代表數字0到9。

訓練超引數

$ ./examples/mnist/train_lenet.sh

訓練過程很長,我截取了部分
這裡寫圖片描述

可以看到最後在10000次迭代後,準確度達到了99.18%
最終訓練模型儲存在 examples/mnist/lenet_iter_10000.caffemodel
訓練狀態儲存在examples/mnist/lenet_iter_10000.solverstate

最後利用訓練好的模型對資料進行預測

$ ./build/tools/caffe.bin test \
-model examples/mnist/lenet_train_test.prototxt \
-weights examples/mnist/lenet_iter_10000
.caffemodel \
-iterations 100

這裡寫圖片描述