caffe入门(二) caffe数据结构和I/O模块、caffe模型、正反向传播,

一、数据结构

1、Blob

Blob是一个四维数组,维度从低到高为:whidth_,height_,channels_,num_

Bloc<float> blob;
int w=blob.width();
int h=blob.height();
int v=blob.channels();
int u=blob.num();
blob[u][v][h][w];

可以将Blob内部的值保存在磁盘,或者从磁盘载入内存。

2、Layer

Layer是Caffe的基本计算单位,至少有一个输入Blob和一个输出Blob

包括前向传播和反向传播

3、Net

Net在caffe中代表一个完整的CNN模型,它包含若干个Layer实例。

二、IO模块

1.数据读取层

数据读取层(DataLayer)是Layer的派生类

可读数据:LMDB,LEVELDB,ImageDataLayer

2.数据转换器

Datatransformer提供对原始输入图像的预处理方法,比如去均值,灰度化等。

三、Caffe模型

Caffe模型又三部分参数组成

(1)可学习参数(Learnable Parameter):又称为可训练参数,神经网络系数,权重。其数值由初始化参数与误差逆传播过程有关。

在内存中使用Blob保持,必要时以二进制protoBuffer文件(.caffemodel)形式序列化并存储在磁盘中,方便进一步微调、共享、性能评估。

(2)结构参数(Archetecture Parameter):卷积层,连接层,采样层的数目,卷积核的数目等。

结构参数使用ProtoBuffer文本格式(*.prototxt)描述,网络初始化阶段通过该文件构建Net对象、Layer对象形成有向五环图。

(3)训练超参数(Hyper-paramenter):控制网络训练收敛的参数。

同样使用ProroBuffer描述,在训练阶段利用该描述文件构件求解器(solver)

四、caffe的前向传播

五、caffe的反向传播

反向传播过程只有在训练环境下才需要计算,对计算资源要求较高。

1.损失函数

损失层(Loss Layer)是CNN的终点,接受两个Blob作为输入,一个预测值,一个真实标签。机器学习的目的是在权值空间中最小化损失函数。

caffe实现了多种损失层,分别用于不同的场合

(1)SoftmaxWithLossLayer(Softmax+交叉熵损失函数),适用于单lable的分类问题。

(2)欧式损失函数:用于回归

(3)hing损失函数(最大间隔分类,SVM)

(4)sigmoid+交叉熵损失函数,用于多分类问题

训练发散的时候需要调小学习率

六caffe的求解过程

常用的方法是随即梯度下降法

Solver的参数

base_lr:0.01//基准学习速率
lr_policy:"step"//学习速率衰减策略,step为步进方式
gamma:0.1//学习速率衰减常数,
momentum:0.9//遗忘因子

Solver每隔一段周期都会对训练的网络做一次评估。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值