caffe 介绍
Caffe是一个以表达式、速度和模块化为核心的深度学习框架,由BLVC(Berkeley Vision and Learning Center)和社区贡献者开发。项目创建者是贾扬清。
Caffe的全称是:Convolutional architecture forfast feature embedding,它是一个清晰、高效的深度学习框架,它是开源的,核心语言是C++,它支持命令行、Python和Matlab接口,它既可以在CPU上运行也可以在GPU上运行。它的license是BSD 2-Clause。
Deep Learning比较流行的一个原因,主要是因为它能够自主地从数据上学到有用的feature。特别是对于一些不知道如何设计feature的场合,比如说图像和speech。
神经网络一般包括:训练,测试两大阶段。
按照 李沐 的说法,训练: 就是把训练数据(原料)和 神经网络模型:如AlexNet(丹方) “倒进” 神经网络训练框架例如cafffe,Mxnet(炼丹炉)然后用 CPU或GPU(真火) “提炼出” 模型参数(仙丹)的过程。测试: 就是把 测试数据 用 训练好的模型(神经网络模型 + 模型参数)跑一跑 看看结果如何。
作为炼丹炉之一的caffe,就是把炼制过程所涉及的概念做抽象,形成一套体系。
总的来讲,由低到高依次把 网络中的数据抽象成Blob, 各层网络抽象成 Layer ,整个网络抽象成Net,网络模型的求解方法 抽象成 Solver。
- Blob
- 主要用来表示网络中的数据,包括训练数据,网络各层自身的参数,网络之间传递的数据都是通过 Blob 来实现的,同时 Blob 数据也支持在 CPU 与 GPU 上存储,能够在两者之间做同步。
- Layer
- 是对神经网络中各种层的一个抽象,包括我们熟知的卷积层和下采样层,还有全连接层和各种激活函数层等等。同时每种 Layer 都实现了前向传播和反向传播,并通过 Blob 来传递数据。
- Net
- 是对整个网络的表示,由各种 Layer 前后连接组合而成,也是我们所构建的网络模型。
- Solver
- 定义了针对 Net 网络模型的求解方法,记录网络的训练过程,保存网络模型参数,中断并恢复网络的训练过程。自定义 Solver 能够实现不同的网络求解方式。
- 接口类型
- 命令行
- 配置文件
- GUI
- 编程语言API
- web API(例如RESTful)
- Caffe的接口
- 命令行:cmdcaffe
- python API:pycaffe
- matlab API:matcaffe
转载请注明:在路上 » 【整理】caffe 介绍