歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Ubuntu安裝Caffe並訓練MNIST

之前的博客,我們介紹了如何在Mac下安裝Caffe並訓練MNIST,但是在Mac下有很多不方便的地方,今天介紹一下如何在Ubuntu下安裝Caffe並且訓練MNIST。
當然,第一手的資料同樣來自於Caffe官網,Ubuntu版本是16.04,Caffe是CPU-ONLY的版本。

Caffe安裝

通過下面的命令安裝protobuf,leveldb,snappy,opencv,hdf5,boost依賴庫,其中最需要注意的是hdf5
[code]sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

接著安裝BLAS庫,
[code]sudo apt-get install libatlas-base-dev

之後是gflags,glog和lmdb,
[code]sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

如果不出意外的話,上面多個依賴庫安裝都非常順利,讓人有點懷疑,但是裡面hdf5這個庫有個坑,之後會提到。
用如下命令將Caffe源碼克隆到桌面,路徑是’Desktop/caffe/’,為了方便將Caffe主路徑用$CAFFE_ROOT代替,
[code]git clonehttps://github.com/BVLC/caffe cd Desktop/caffe/

其中需要將Makefile.config.example拷貝一份成Makefile.config,這樣之後才能make。另外Makefile.config需要進行修改,去掉CPU_ONLY := 1的注釋,這樣Caffe就只運行在CPU上了。
[code]cp Makefile.config.example Makefile.config
make all
make test
make runtest

在make all這一步遇到了一些問題,首先是找不到hdf5.h,在Makefile.config中INCLUDE_DIRS後添加/usr/include/hdf5/serial即可繼續編譯。
[code]src/caffe/layers/hdf5_data_layer.cpp:13:18: fatal error: hdf5.h: No such file or directory

但是此後又出現如下問題,
[code]/usr/bin/ld: cannot find -lhdf5_hl
/usr/bin/ld: cannot find -lhdf5

可以在LIBRARY_DIRS後添加/usr/lib/x86_64-linux-gnu/hdf5/serial/,最終Makefile.config文件對應部分修改如下,
[code]INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/

以上的操作保證Caffe編譯過程中可以找到hdf5的頭文件和共享庫文件。
最終的make runtest可以看到如下圖的結果,保證Caffe安裝成功,

MNIST訓練

之前將Caffe的環境搭好了,現在用MNIST這個數據集進行測試,繼續在$CAFFE_ROOT下進行操作。
[code]./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh

經過上述操作./examples/mnist/路徑下會有mnist_test_lmdb和mnist_train_lmdb兩個文件夾,分別是測試和訓練數據。
在最終訓練之前需要修改./examples/mnist/lenet_solver.prototxt最後一句話為,
[code]solver_mode: CPU

這樣保證整個訓練過程在CPU上進行,最後執行訓練命令,
[code]cd $CAFFE_ROOT
./examples/mnist/train_lenet.sh

看到如下效果,

一共迭代10000次,准確率為0.9915,最後訓練的model為./examples/mnist/lenet_iter_10000.caffemodel。
https://groups.google.com/forum/#!topic/caffe-users/cdyqjNpoFRY
https://github.com/BVLC/caffe/issues/2690
Copyright © Linux教程網 All Rights Reserved