運(yùn)行caffe自帶的兩個(gè)簡(jiǎn)單例子.
為了程序的簡(jiǎn)潔,在caffe中是不帶練習(xí)數(shù)據(jù)的,因此需要自己去下載。但在caffe根目錄下的data文件夾里,作者已經(jīng)為我們編寫好了下載數(shù)據(jù)的腳本文件,我們只需要聯(lián)網(wǎng),運(yùn)行這些腳本文件就行了。
注意:在caffe中運(yùn)行所有程序,都必須在根目錄下進(jìn)行,否則會(huì)出錯(cuò)。
1、mnist實(shí)例
mnist是一個(gè)手寫數(shù)字庫,由DL大牛Yan LeCun進(jìn)行維護(hù)。mnist最初用于支票上的手寫數(shù)字識(shí)別, 現(xiàn)在成了DL的入門練習(xí)庫。征對(duì)mnist識(shí)別的專門模型是Lenet,算是最早的cnn模型了。mnist數(shù)據(jù)訓(xùn)練樣本為60000張,測(cè)試樣本為10000張,每個(gè)樣本為28*28大小的黑白圖片,手寫數(shù)字為0-9,因此分為10類。
首先下載mnist數(shù)據(jù),假設(shè)當(dāng)前路徑為caffe根目錄:
sudo sh data/mnist/get_mnist.sh
來看看get_mnist.sh,其實(shí)不過就是下載mnist圖片的腳本而已。

運(yùn)行成功后,在 data/mnist/目錄下有四個(gè)文件:

這些數(shù)據(jù)不能在caffe中直接使用,需要轉(zhuǎn)換成LMDB數(shù)據(jù):
sudo sh examples/mnist/create_mnist.sh如果轉(zhuǎn)換成功后,會(huì)在 examples/mnist/目錄下,生成兩個(gè)文件夾,分別是mnist_train_lmdb和mnist_test_lmdb,里面存放的data.mdb和lock.mdb,就是我們需要的運(yùn)行數(shù)據(jù)。
接下來是修改配置文件,如果你有GPU且已經(jīng)完全安裝好,這一步可以省略,如果沒有,則需要修改solver配置文件。
需要的配置文件有兩個(gè),一個(gè)是lenet_solver.prototxt,另一個(gè)是train_lenet.prototxt.
首先打開lenet_solver_prototxt
sudo gedit examples/mnist/lenet_solver.prototxt
根據(jù)需要,在max_iter處設(shè)置最大迭代次數(shù),以及決定最后一行solver_mode,是否要改成CPU.
保存退出后,就可以運(yùn)行這個(gè)例子了
sudo time sh examples/mnist/train_lenet.sh
CPU運(yùn)行的時(shí)間會(huì)較長(zhǎng),而GPU上運(yùn)行就很快了。
以下是950MGPU+CUNDD的運(yùn)行結(jié)果,accuracy = 0.9903,loss = 0.0299111

2、cifar10實(shí)例
cifar10數(shù)據(jù)訓(xùn)練樣本50000張,測(cè)試樣本10000張,每張為32*32的彩色三通道圖片,共分為10類。
下載數(shù)據(jù):
sudo sh data/cifar10/get_cifar10.sh
運(yùn)行成功后,會(huì)在 data/cifar10/文件夾下生成一堆bin文件
轉(zhuǎn)換數(shù)據(jù)格式為lmdb:
sudo sh examples/cifar10/create_cifar10.sh
轉(zhuǎn)換成功后,會(huì)在 examples/cifar10/文件夾下生成兩個(gè)文件夾,cifar10_train_lmdb和cifar10_test_lmdb, 里面的文件就是我們需要的文件。

為了節(jié)省時(shí)間,我們進(jìn)行快速訓(xùn)練(train_quick),訓(xùn)練分為兩個(gè)階段,第一個(gè)階段(迭代4000次)調(diào)用配置文件cifar10_quick_solver.prototxt, 學(xué)習(xí)率(base_lr)為0.001
前后兩個(gè)配置文件就是學(xué)習(xí)率(base_lr)和最大迭代次數(shù)(max_iter)不一樣,其它都是一樣。如果你對(duì)配置文件比較熟悉以后,實(shí)際上是可以將兩個(gè)配置文件合二為一的,設(shè)置lr_policy為multistep就可以了。
第二階段(迭代1000次)調(diào)用配置文件cifar10_quick_solver_lr1.prototxt, 學(xué)習(xí)率(base_lr)為0.0001
base_lr: 0.001
momentum: 0.9
weight_decay: 0.004
lr_policy: "multistep"
gamma: 0.1
stepvalue: 4000
stepvalue: 5000
run:sudo time sh examples/cifar10/train_quick.sh
950MGPU+cudnn運(yùn)行結(jié)果:accuracy = 0.7497, loss = 0.754977
