本文是对开始深度学习之旅——caffe安装的补充。[附]
在安装好ubuntu 16.04后,接下来的步骤同在deepin上的操作。
在安装好ubuntu 16.04后,接下来的步骤同在deepin上的操作。
安装依赖
sudo apt-get update
sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install libatlas-base-dev
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install libopencv-dev
下载intel/caffe
git clone https://github.com/intel/caffe.git
修改配置
下载完成后拷贝配置文件,并添加头文件和库
cd caffe/
cp Makefile.config.example Makefile.config
配置文件Makefile.config中需要修改的地方
# 添加/usr/include/hdf5/serial
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
# /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
编译并测试
运行make all -j4后,会自动下载mkl,然后下载mklnn并安装。我用deepin的时候就卡在这里,总是下载不下来。ubuntu稍微卡一下后就下载完了。
make all -j4
make test
make runtest
在我运行测试后,有一个测试同不过。
[ FAILED ] 1 test, listed below:
[ FAILED ] MKLDNNPoolingLayerTest/0.TestForwardAve, where TypeParam = caffe::CPUDevice<float>
Makefile:701: recipe for target 'runtest' failed
make: *** [runtest] Error 1
使用mnist手写数据集进行训练和测试
获取数据集
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
训练并测试
# 训练
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
# 测试
./build/tools/caffe test --model=examples/mnist/lenet_train_test.prototxt --weights=examples/mnist/lenet_iter_10000.caffemodel --iterations=100
训练时间截图
测试太快了,不到3秒跑完。
感慨一下
intel/caffe在mkl的加持下确实是速度提升了很多很多。我之前用BLVC/caffe,使用mnist训练LeNet的时候,迭代100次时间大约是10s多,而使用intel/caffe只要2-3秒,这就是差距啊!
附:开始深度学习之旅——caffe安装
因为要参加Intel的软创大赛,而本次大赛的主题是“基于深度学习的应用创新”,官方要求是使用Intel优化的caffe。故记录下caffe安装过程。
安装依赖
sudo apt-get update
sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install libatlas-base-dev
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install libopencv-dev
安装会耗费很长的时间。安装包具体分析
build-essential:编译程序必须的软件包,依赖libc6-dev,gcc,g++,make,dpkg-dev等
pkg-config: 用于获得某一个库/模块的所有编译相关的信息
libprotobuf-dev: Google Protecol Buffer简称Protobuf,是一种轻便高效的结构化数据存储格式。caffe利用Protobuf定义网络模型
libleveldb-dev libhdf5-serial-dev liblmdb-dev :caffe支持的三种数据库:LevelDB,HDF5和LMDB
libsnappy-dev: Snappy是一个压缩/解压缩库,旨在获得高速的压缩和合理的压缩率。
libatlas-base-dev:基本线性代数子库,Intel/caffe使用的是MKL
libboost-all-dev:boost库,C++的准标准库
libgflags-dev: 处理命令行参数
libgoogle-glog-dev: 日志库
下载caffe
我是先用BLVC/caffe装的,intel/caffe总是有各种问题
git clone https://github.com/BVLC/caffe.git
修改配置
下载完成后拷贝配置文件,并添加头文件和库
cd caffe/
cp Makefile.config.example Makefile.config
配置文件Makefile.config中需要修改的地方
# 添加/usr/include/hdf5/serial
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
# /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
# 解除注释 CPU_ONLY := 1
CPU_ONLY := 1
intel/caffe默认是解除了CPU_ONLY := 1的
编译并测试
# intel/caffe会下载mkl
make all -j4
make test
make runtest
较短时间后,测试通过,
到此算是基本完成了BLVC/caffe的安装。
遇到的错误及解决办法
./include/caffe/util/device_alternate.hpp:34:23: fatal error: cublas_v2.h: 没有那个文件或目录
这里是编译依赖了GPU的一些库,在配置文件中解除注释 CPU_ONLY := 1就行了。