caffe源碼包提供了多個DEMO,這里介紹mnits和cifar10的實驗
1. mnits
安裝好caffe后,在caffe-master/examples/mnist目錄下可以找到LeNet模型的具體實現
數據下載:
./data/mnist/get_mnist.sh
在./data/mnist/目錄下下載了4個*.gz格式的數據壓縮包,train-*是訓練數據,t10k-*是測試數據,下載后會利用gunzip命令解壓縮[其中源文件會默認被移除]
train-labels-idx1-ubyte.gz => train-labels-idx1-ubyte train-images-idx3-ubyte.gz => train-images-idx3-ubyte t10k-labels-idx1-ubyte.gz => t10k-labels-idx1-ubyte t10k-images-idx3-ubyte.gz => t10k-images-idx3-ubyte
數據格式轉換
將上一步下載解壓后的文件轉換為lmdb文件. Caffe支持多種數據格式輸入網絡:leveldb,lmdb,HDF5等,可以根據自己需要選擇.
./examples/mnist/create_mnist.sh
在 ./examples/mnist/目錄下會創建2個文件夾:mnist_train_lmdb和mnist_test_lmdb,其中分別包含data.mdb和lock.mdb兩個文件
網絡配置
LeNet網絡定義在examples/mnist/lenet_train_test.prototxt文件中,需要關注的是里面source參數文件路徑.
查看文件
gedit examples/mnist/lenet_train_test.prototxt
關注: TRAIN 的data_param的source: "examples/mnist/mnist_train_lmdb", TEST 的data_param的source: "examples/mnist/mnist_test_lmdb"
訓練網絡
./examples/mnist/train_lenet.sh # 迭代10000次, 輸出 "Optimization Done." # 准確率達到99%
參數配置
gedit examples/mnist/lenet_solver.prototxt
默認是使用GPU完成運算,如果使用的是CPU,則需要修改配置文件
# 將配置文件最后一項修改 # solver mode: CPU or GPU solver_mode: GPU # 為 solver_mode:CPU
2. cifar10
基本過程同mnist, 執行命令如下:
./data/cifar10/get_cifar10.sh ./examples/cifar10/create_cifar10.sh ./examples/cifar10/train_quick.sh
網絡配置
gedit examples/cifar10/cifar10_quick_train_test.prototxt
參數配置
gedit examples/cifar10/cifar10_quick_solver.prototxt
運行結果[迭代了5000次,准確路74.8%]:
3. 生成網絡組織模型圖形
下面以打印mnist網絡模型為例,利用的是caffe內提供的draw_net.py ,在caffe-master/python目錄下,需要make pycaffe之后才可以使用
在當前目錄為caffe-master下,執行
python ./python/draw_net.py ./examples/mnist/lenet_train_test.prototxt lenet.jpeg
在會在當前路徑caffe-master下生成一張lennet.jpeg圖像
iiiiiiiii