应该怎样理解深度学习Caffe?
2020-07-13
1469
Caffe 是深度学习 框架中经常遇到的,那么到底Caffe 是什么?我们又应该怎样理解呢?下面,小编对于Caffe 做了一个简单的介绍,希望对大家有所帮助。
一、Caffe 基本概念
Caffe 全称为:Convolutional Architecture for Fast Feature Embedding,又叫做卷积神经网络 框架。是一个同时具有表达性、速度和思维模块化的优点的,清晰、效率高的深度学习 框架。而且Caffe 是开源的,采用的编程语言为C++,支持命令行、Python和Matlab接口,它既支持CPU上运行,也支持在GPU上运行。
二、Caffe 架构
数据存储:Caffe 通过”blobs”,也就是通过4维数组的方式来进行存储和传递数据。Blobs为批量图像(或其它数据)的操作,参数或者是参数更新,提供了一个统一的内存接口。Models是以Google Protocol Buffers的方式磁盘上存储。而大型数据则在LevelDB数据库中进行存储。
层:一个Caffe 层(Layer)是一个神经网络 层的本质,采用一个或者多个blobs作为输入,并且产生一个或多个blobs作为输出。网络是一个整体的操作,而层的关键职责有两个:一是前向传播,需要输入并产生输出;二是反向传播,以梯度为输出,利用参数和输入计算梯度。Caffe 为此提供了一套完整的层类型。
网络和运行方式:Caffe 保留了所有的,有向无环层图,这就确保了正确的进行前向传播和反向传播。Caffe 模型是终端到终端的机器学习 系统。一个典型的网络通常是开始于数据层,而结束于loss层。通过单一的一个开关,使其网络在CPU或GPU上运行。
训练一个网络:Caffe 训练一个模型(Model)依靠的是速度快、而且标准的随机梯度下降算法。
三、Caffe 优势
学起来容易:Caffe 模型与相应优化都是以文本形式给出的,省去了学习相关代码的麻烦。
Caffe 给出了模型的定义、预训练的权重以及最优化设置,上手速度快。
运行速度快:运行最棒的模型,处理海量的数据。
Caffe 通常与cuDNN 结合来一起使用,用来测试AlexNet模型,在K40上只需要1.17ms就能处理一张图片
模块化:Caffe 允许对新数据格式、网络层和损失函数 进行扩展,方便扩展到新的设置和任务上。
开放性:开放的源码以及参考模型用于再现。
社区好:能够通过BSD-2参与开发与讨论。