作者:七月在线老宅
时间:2017年3月23日
硬件:Core i7-6700;16GB;Nvidia GeForce GTX1070;500G SSD
(多说一句——老宅血泪感悟:搞DL没有好硬件是不行的)
平台:台式PC
软件:Linux 对应的GTX1070驱动;cuda8.0;cudnn 5.1;Linux 14.04 LTS,,,用git安装caffe
网络:必须
首先,是鸣谢。
前人栽树,后人乘凉,这次实验的成功完成和教程的多项细节的完善,得到了原CSDN算法大神——结构之法、算法之道博主,现七月在线CEO兼创始人——July的鼎力支持。
本教程借鉴了他的团队在去年完成的《手把手教你搭建caffe及手写数字识别》。
另外,在此鸣谢如下几篇博客:
http://www.jianshu.com/p/9e0a18608527
http://www.cnblogs.com/empty16/p/4828476.html
http://www.cnblogs.com/yizhichun/p/6339789.html
老宅在此表示感谢~!
——————————分割线——————————
写在教程之前(个人体会):
笔者在本次实验之前,已经对机器学习、深度学习产生了极为浓厚的兴趣,经过数月的接触和学习,笔者认为,基于深度神经网络的机器学习策略,必将在人工智能领域为技术的进步贡献出推动性的力量,也必将在行业的未来发展中释放出夺目的光芒!
首先,心理及经验准备。
就Linux的使用而言,刚刚如坑的Linux小白,包括从windows的温室里成长起来的带有一定cmd经验的小白(包括曾经的笔者),解决内心对于命令行的抵触心理是学习Linux的必经之路,借助Google工程师赵智沉的这条博文里的一句话:相信我,克服这个障碍,你将打开新世界的大门。何况,用命令行工作才显得更酷更极客,不是吗?
不管你信不信,反正我是信了。。。这坑,哥们儿我先跳为敬。
前期环境搭建:
本文实验基于的环境:Ubuntu14.04LTS+CUDA8.0+cudnn5.1的安装和调试请读者查看本博之前的博文:
《(Ubuntu+Tensorflow+CUDA8.0+cudnn,新鲜靠谱版)利用DL学梵高作画---实战记录和心得 》,本文不再赘述。
——————————再次割——————————
确保网络畅通!好,开始。
一、加装依赖环境,执行如下操作
点击Terminal,输入 sudo -i 回车
输入开机密码(输入时屏幕不显示输入内容),回车
然后,做如下操作:
输入:apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler 回车
输入:apt-get install --no-install-recommends libboost-all-dev 回车
输入:apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev 回车
上面的操作在执行中,你会看到屏幕作如下显示:
全部代码执行完毕后,笔者的机器显示如下:
二、安装BLAS(别问为什么,在你还是个小白的时候,老老实实听话,先装先用,后问)
继续在Terminal中做如下操作
输入:sudo apt-get install libatlas-base-dev 回车
然后屏幕显示如下:
关键一步——clone Caffe
继续执行下面操作:
在Terminal中输入:git clone git://github.com/BVLC/caffe.git 回车,然后,等待,如果发现执行慢,屏幕中有error显示,说明出现问题,
(这里要PS:前文提到,本次安装操作要求网络必须畅通,原因就在这里。这次安装caffe的方式为github克隆的方式,笔者在执行该操作的时候,前后失败多次,最终安装成功,整个过程显示如下)
上述操作完成后
需要做如下操作:
1.修改位于caffe目录下的classification.cpp,操作如下:
在Terminal中输入:cd ~/caffe/examples/cpp_classification/ 回车
输入: ls 回车
输入 vi classificaton.cpp 回车 会出现如下屏幕显示:
此时,再次 回车
会进入如下界面:
这个时候,小白要注意:在这个界面的上方:也就是显示有如下代码的地方
#include
#ifdef USE_OPENCV
#include
#include
#include
#endif // USE_OPENCV
#include
#include
#include
#include
#include
#include
在最后一行“#include
#include
#include
(这里PS:对于超级小白来说,输入操作如下:在键盘上按 i 键,这时界面左下角显示 INSERT 或 插入 字样,表示界面可以输入,然后,按键盘的上下左右键将光标移动到#include
操作界面显示如下:
然后,修改一个文件,叫做 Makefile.config,操作如下:
在Terminal中继续操作:
输入:cd ~/caffe 回车
输入:cp Makefile.config.example Makefile.config 回车
输入:sudo vi Makefile.config 回车
注意页面中的内容,按照刚才对超级小白的提示操作,修改这个界面内的文本,如果本机已经安装了OpenCV 3.x,需要将界面中的OPENCV_VERSION :=3 这行代码前的 # 删掉,然后,按Esc,再按 Shift 和 :,在输入 wq,回车
上述操作的显示界面如下:
在上述操作完成候,即可开始编译操作。
编译操作如下:
在Terminal中继续:
输入:cd ~/caffe 回车
输入:make all 回车 然后,等待
输入:make test 回车 然后,等待
输入:make runtest 回车 然后,等待
全部显示页面如下:
在编译结束时,有可能会报错,如果出现报错,如下页面中给出了一定的解决提示,笔者就是参考了该页面的提示进行了修改,最终编译成功:
http://www.jianshu.com/p/9e0a18608527
问题及解决办法如图:
然后,就是激动人心的时刻——MNIST训练实战:
首先,提出一个问题:在前文要求的环境全部配好的情况下,使用Caffe进行MNIST训练总共分几步?答,四步!操作如下:
在Terminal中,
输入:cd ~/caffe 回车
输入:sh data/mnist/get_mnist.sh 回车 等待
输入:sh examples/mnist/create_mnist.sh 回车 等待
输入:sh examples/mnist/train_lenet.sh 回车 等待
然后,全过程页面显示如下:
然后,训练时页面,就是下面的样子:
至此,我们想看到的MNIST训练,全部完成。撒花~~~