caffe基础知识简介

来源:互联网 发布:淘宝死多少人 编辑:程序博客网 时间:2024/06/05 08:05

近来整理资料,发现刚接触caffe时写的一些笔记,现将笔记整理出来,以便以后查看。

caffe是一个开源的深度学习框架,可读性高,它允许利用自己的CPU或者GPU训练网络,不需要自己编写程序,只需要通过配置文件来指定网络。

caffe实现了前馈卷积神经网络架构(CNN),在一个n层的神经网络中,通过调整其中的参数,使任何一层的输入和输出都是相等的,任何一层都是输入的另一种表示。深度学习是一种特征学习方法,把原始数据通过一些简单的非线性的模型转化为更高层次、更抽象的表达,高层次的表达能强化输入数据的区分能力,同事削弱不相关因素。

caffe都是一些模块组成,模块包括4个部分:Blob(caffe的数据表示,在layer上流动),layer(不仅可以表示神经网络层,也可以表示输入输出层),Net(神经网络结构,将layer层叠关联起来),slover(协调神经网络的训练和测试,定义一些参数)。

Blob 四维连续数组,通常表示为(n, k, w, h)是基础的数据结构,可表示输入输出数据,也可表示参数数据

Layer 网络基本单元,每一层类型定义了3种计算: 1. 初始化网络参数。2. 前向传播的实现。 3. 后向传播。

Net 无回路有向图,有一个初始化函数,主要有两个作用: 1. 创建blobs和layers。2. 调用layers的setup函数来初始化layers。还有两个函数 Forward和Backward,分别调用layers的 forward 和 backward。

Solver 的作用是:a. 创建用于学习的训练网络和用于评估的测试网络; b. 周期性的评估测试网络; c. 通过调用前馈和后馈函数进行的迭代优化和参数更新。solver每轮迭代都会通过前馈函数计算输出和损失(loss),还用后馈传播来计算梯度。通过更新学习率等方法更新solver。

训练好的caffe model 是用于保存和恢复网络参数,后缀为 .caffemodel; solver保存和恢复运行状态,后缀为 .solverstate

补充:

深度学习最核心的两个方面:数据和模型。数据是带标签的图片集,主要分为训练集,验证集和测试集;模型是描述CNN结构的有向五环图,表示对原始数据的处理方式,也是前文所提到的caffemodel。

另外caffe也不是直接处理原始数据的,而是由预处理程序将原始数据变换存储为LMDB或者LevelDB格式,这两种方式可保持较高的IO效率,加快训练时的数据加载速度,另一方面是因为数据类型很多(二进制文件,文本文件,JPG等图像文件等)不可能用同一套代码实现所有类型的输入数据读取,所以转换为统一的格式可以简化数据读取层的实现。

原创粉丝点击