当调用caffe训练数据的时候实际上调用的文件是在caffe.cpp中实现的train()
和 test()
两个函数。搞清楚这两个函数对caffe的调用过程很有帮助。在这之前要提到几个相关的库,虽然与caffe实现关系不大,但完全不懂还是多少有点影响代码的理解。
Google Code
glog
google出的一个C++轻量级日志库,网络上的教程文档很多English docs, Chinese docs, glog使用与功能修改。
看代码的时候充斥这类似CHECK_EQ
、 CHECK_NOTNULL
、CHECK_STREQ
、CHECK_DOUBLE_EQ
的函数这就是glog里面的函数,类似ASSERT()的断言。
gflags
它是一个标记选项的库,看了这个GFLAGS使用手册马上就能明白作用。另外的文档有Google gflags使用说明。
gtest
Google的开源C++单元测试框架,caffe里面test代码中大量用到,网上教程也是一大堆,中文里面最好的玩转Google开源C++单元测试框架Google Test系列(gtest)(总),英文文档googletest
关于CPU加速
Caffe推荐的BLAS(Basic Linear Algebra Subprograms)有三个选择ATLAS,Intel MKL,OpenBLAS。其中ATLAS是caffe是默认选择开源免费,如果没有安装CUDA的不太推荐使用,因为CPU多线程的支持不太好;Intel MKL是商业库要收费,我没有试过但caffe的作者安装的是这个库,估计效果应该是最好的;OpenBLAS开源免费,支持CPU多线程,我安装的就是这个。顺便贴上安装代码,其实很简单:
安装ATLAS
1
| sudo apt-get install libatlas-base-dev
|
安装OpenBLAS
1
| sudo apt-get install libopenblas-base
|
参考链接:
Caffe issues #16: Remove Intel MKL dependency
Caffe issues #79: Support multithreading in the CPU mode of Solver::Solve