Caffe是UC Berkeley的Ph.D贾扬清写的一个用于深度学习的框架,编程语言C++,GPU计算则是使用cuda加速,cpu的计算主要是依赖于BLAS进行加速。
依赖库如下:
1. Cuda
NVIDIA公司推出的基于NVIDIA显卡的GPU计算接口,大大提高计算速度
2. BLAS
Basic Linear Algebra Subprograms,即基础线性代数子程序库,提供了各种加速向量和矩阵运算的接口。
3. ProtoBuff
Google开源的用于数据交换的库,主要是用于将对象序列化或反序列化,并进行传输。 在Caffe中主要作用是将模型和各种参数进行序列化。
4. Opencv
非常强大的用于计算机视觉的一个C++的开源库,在Caffe中有点大材小用了。 主要是读写图像和其他的一些基础操作。
5. Boost
Boost是一个C++的库,用途很广,在caffe中主要用到了智能指针、计时器、随机数产生器等。
6. Google-glog
glog是google开源的一个基于C++的日志库,主要用于写日志。
7.gflags
gflags是一个用于C++ 命令行参数处理的一个库。
8. LevelDB和LMDB
LevelDB 是单进程的服务,性能非常之高。 在一台4核Q6600的cpu机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。 LMDB是openLDAP项目开发的嵌入式(作为一个库嵌入到宿主程序)存储引擎。详见 LMDB和LevelDB都是键/值对(Key/Value Pair)嵌入式数据库管理系统编程库。 虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%。 因此lmdb取代了leveldb成为Caffe默认的数据集生成格式。
9. Snappy
Snappy是google开源的一个基于C++的压缩、解压缩的库。 这个库主要的目标并不是压缩率,而是速度和合理的压缩率。
10. HDF5
Hierarchical Data Format,可以存储不同类型的图像和数码数据的文件格式, 并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。 大多数普通计算机都支持这种文件格式。