深度学习实践操作—从小白到大白
目录
九. Caffe依赖包解析
参考:http://blog.csdn.net/fengbingchun/article/details/48768039
http://blog.csdn.net/u012494820/article/details/52013905
caffe的安装是一个非常繁琐的过程,实际上在安装过程中所遇见的大多数问题都是由于依赖包没有安装成功或者依赖包没有在搜索路径中。因此,了解caffe的依赖包对于安装过程中的问题解决和设置编译相关文件很有帮助。
1. ProtoBuffer
ProtoBuffer是Google开发的一种可以实现内存与非易失存储介质(如硬盘文件)之间数据交换的协议接口。caffe中使用ProtoBuffer作为 权值和模型参数的载体,用户只需要建立统一的参数描述文件(proto),利用protoc编译便可以进行数据的高效传递。
2. Boost
Boost被称为“C++标准库”, 它是一个可移植、跨平台,提供源代码的C++库。使用了很多现代编程技术,内容广泛。
(1). shared_ptr.hpp:智能指针,使用它可以不需要考虑内存释放的问题;
(2). date_time/posix_time/posix_time.hpp:时间操作函数;
(3). python.hpp:C++/Python互操作;
(4). make_shared.hpp:make_shared工厂函数代替new操作符;
(5). python/raw_function.hpp:C++/Python互操作;
(6). python/suite/indexing/vector_indexing_suite.hpp:C++/Python互操作;
(7). thread.hpp:线程操作;
(8). math/special_functions/next.hpp:数学函数;
3. GFLAGS
它是google的一个开源的处理命令行参数的库,使用C++开发,可以替代getopt函数。GFlags与getopt函数不同,在GFlags中,标记的定义分散在源代码中,不需要列举在一个地方。在caffe中发挥命令行参数解析的作用。
4. GLOG
GLOG是Google开发的一个应用程序的日志库,提供基于C++风格的流的日志API,以及各种辅助的宏。它的使用方式与C++的stream操作类似。在caffe中主要用于开发者查看训练过程的中间输出。
5. BLAS
由于卷积神经网络中主要进行矩阵、向量之间的运算,caffe调用BLAS(Basic Linear Algebra Subprograms)中的方法将其实现。
6. HDF5
HDF(HierarchicalData File)是美国国家高级计算应用中心(NCSA)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。。caffe模型可以选择保存为HDF5格式,或者默认的ProtoBuffer格式。
7. LMDB
它是一个超级快、超级小的Key-Value数据存储服务,是由OpenLDAP项目的Symas开发的。使用内存映射文件,因此读取的性能跟内存数据库一样,其大小受限于虚拟地址空间的大小。
8. LEVELDB
它是google实现的一个非常高效的Key-Value数据库。它是单进程的服务,性能非常高。它只是一个C/C++编程语言的库,不包含网络服务封装。
9. Snappy
Snappy它是一个C++库,用来压缩和解压缩的开发包。
10. OpenCV
OpenCV是世界上最流行的开源计算机视觉库。