1. 程式人生 > >執行手寫體數字識別例程

執行手寫體數字識別例程

1.MNIST資料集

(Mixed National Institute of Standards and Technology)是一個大型的手寫體數字資料庫,廣泛用於機器學習領域的訓練和測試。包括60000個訓練集和10000個測試集,每張圖進行尺寸歸一化,數字居中處理,固定尺寸為28*28px。
這裡寫圖片描述

1.1下載MNIST資料集

cd caffe
cd data/mnist/
./get_mnist.sh
tree(如果沒有要安裝sudo apt install tree)
這裡寫圖片描述

1.2MNIST資料格式描述
這裡寫圖片描述
這裡寫圖片描述

1.3轉換格式

下載到的原始資料集為二進位制檔案,需要轉換為LEVELDB或LMDB才能識別。
在caffe根目錄下執行./examples/mnist/create_mnist.sh
可以看到examples/mnist下有兩個目錄
藍色塗掉的部分為yourname

2 LeNet5模型

2.1模型描述

examples/minist/lenet_train_test.prototxt檢視

資料來源mnist負責從預處理得到的lmdb資料庫中讀取資料data和標籤書label,影象資料送入後續CNN結構中進行處理,CNN結構包括一組由卷積層conv(1,2)+下采樣層pool(1,2)交替形成的特徵層ip1和ip2(類似於多層感知器結構)。對ip2的輸出進一步同標籤資料label對比,可計算分類準確率accuracy和損失值loss。

2.2訓練超引數

examples/mnist/train_lenet.sh檢視
–solver=examples/mnist/lenet_solver.prototxt指定了訓練超引數(Hyper-Paramenter)

2.3訓練日誌

./examples/mnist/train_lenet.sh
這裡寫圖片描述
問題:沒有改成CPU
將–solver=examples/mnist/lenet_solver.prototxt中的模式改為CPU
再輸入./examples/mnist/train_lenet.sh

跑起來

./examples/mnist/train_lenet.sh

2.4用訓練好的模型對資料進行預測

利用訓練號的模型權值檔案(examples/mnist/lenet_iter_10000.caffemodel)可以測試資料集(或外部測試集)進行預測。
命令
./build/tools/caffe.bin test-model=examples/mnist/lenet_train_test.prototxt-weights= examples/mnist/lenet_iter_10000.caffemodel

解釋:
第一行:表示只做預測(前向傳播計算),不進行引數更新(後向傳播計算)。
第二行:指定模型描述文字檔案。
第三行:指定模型預先訓練好的權值檔案
第四行:指定測試迭代次數。參與測試的樣例數目為(iterations*batch_size)。
batch_size在model prototxt中設定,為100時剛好覆蓋全部10000個測試樣本。

參考:深度學習21天實戰Caffe。作者:趙永科