Caffe是基于C++语言及CUDA开发的框架,支持MATLAB、Python接口和命令行,可直接在GPU与CPU中切换,训练效率有保障,在工业中应用较为广泛。
在Caffe中,网络层通过C++定义,网络配置使用protobuf定义,可以较方便地进行深度网络的训练与测试。Caffe官方提供了大量实例,它的训练过程、梯度下降法等模块都被封装,开发者学习prototxt语法后,基本能自己构造深度卷积神经网络。其代码易懂好理解,高效实用,上手简单,比较成熟和完善,实现基础算法方便快捷,适合工业快速应用与部署。
Caffe通过Blob以四维数组的方式存储和传递数据。Blob提供了一个统一的内存接口,用于批量图像(或其他数据)的操作与参数更新。Model以Google Protocol Buffers的方式存储在磁盘上,大型数据存储在LevelDB中。
Caffe提供了一套完整的层类型。一个层(Layer)采用一个或多个Blob作为输入,并产生一个或多个Blob作为输出。Caffe保留所有的有向无环层图,确保正确地进行前向传播和反向传播。模型是终端到终端的机器学习系统。一个典型的网络开始于数据层,结束于损失层。通过一个单一的开关,网络运行在CPU或GPU上。
Caffe相对于TensorFlow等使用pip一键安装的方式来说,编译安装稍微麻烦一些。以Ubuntu16.04为例,首先需要安装一些依赖库;然后去Git上复制源代码到本地,配置好相关库的路径就可以进行编译安装了。对于GPU,还需要安装CUDA及NVIDIA驱动。