Caffe(全称Convolutional Architecture for Fast Feature Embedding)是一个兼具表达性、速度和思维模块化的
深度学习框架,由
伯克利人工智能研究小组和伯克利视觉和学习中心开发。虽然其内核是用
C++编写的,但Caffe有
Python和
Matlab相关接口。
Caffe是一个
深度学习框架,最初开发于
加利福尼亚大学伯克利分校。Caffe在BSD许可下开源,使用C++编写,带有Python接口。是贾扬清在加州大学伯克利分校攻读博士期间创建了Caffe项目。项目托管于
GitHub,拥有众多贡献者。Caffe应用于学术研究项目、初创原型甚至视觉、语音和多媒体领域的大规模工业应用。雅虎还将Caffe与Apache Spark集成在一起,创建了一个分布式深度学习框架CaffeOnSpark。2017年4月,
Facebook发布Caffe2,加入了
递归神经网络等新功能。2018年3月底,Caffe2并入PyTorch。
模块性:Caffe 以
模块化原则设计,实现了对新的数据格式,网络层和损失函数轻松扩展。
表示和实现分离:Caffe 已经用谷歌的 Protocl Buffer定义模型文件。使用特殊的文本文件 prototxt 表示网络结构,以有向非循环图形式的网络构建。
Python和
MATLAB结合: Caffe 提供了
Python 和 MATLAB 接口,供使用者选择熟悉的语言调用部署算法应用。
简单来讲,Caffe 中的
数据结构是以 Blobs-layers-Net 形式存在。其中,Blobs 是通过 4 维向量形式(num,channel,height,width)存储网络中所有权重,激活值以及正向反向的数据。作为 Caffe 的标准数据格式,Blob 提供了统一内存接口。Layers 表示的是神经网络中具体层,例如卷积层等,是 Caffe 模型的本质内容和执行计算的基本单元。layer 层接收底层输入的 Blobs,向高层输出 Blobs。在每层会实现前向传播,后向传播。Net 是由多个层连接在一起,组成的有向无环图。一个网络将最初的 data 数据层加载数据开始到最后的 loss 层组合为整体。