您的位置:首页 > Web前端

caffe——Blob,Layer,Net 及其对应配置文件的编写

2017-05-30 17:46 411 查看
caffe——Blob,Layer,Net 及其对应配置文件的编写

Dl是一个组合模型,它由许多层组合而成。caffe就是组建深度网络的一个工具,它按照一定测策略,一层一层搭建出自己的模型。它将所有信息数据定义为blobs,以便进行操作和通讯。Blob是caffe框架中一个标准数据类型。是一个统一的内存接口。
1 blob
Blobs封装了运行时的数据信息,提供了CPU和GPU的同步。从数学上看,Blob就是一个N维数组,它是数据操作的基本单位,类似于matlab中以矩阵为基本单位一样。矩阵是二维的,而Blob是N维的,N可以是2,3,4等等。对于图片数据,Blob可表示为(N*C*H*W)这样一个4D数据。其中N表示图片的数量,C表示图片的通道数,H和W分别表示图片的高度和宽度。当然Blob也可用于非图片数据,如传统多层感知机,用2D的Blob,调用innerProduct层来计算。
2 layer
层是网络模型组成要素和计算的基本单位。层的类型较多,如Data,Convolution,Pooling,ReLU,Softmax-loss,Accuracy等。


每个层都定义了三种关键计算:setup,forward 和backword

setup:层的建立和初始化,以及在整个模型中连接初始化

forward:从bottom得到输入数据,进行计算,并将计算结果送到top,输出

backward:从层输出端top得到数据梯度,计算当前层梯度,计算结果送到bottom,向前传递。

3 Net
就像搭积木一样,一个net由许多layer组合而成,现在给出一个简单的2层神经网络定义。拓扑结构如下:
![这里写图片描述](http://images2015.cnblogs.com/blog/140867/201512/140867-20151224155540452-1214693451.jpg)
第一层:name为mnist,type为Data,没有输入,只有两个输出,一个为data,一个为label
第二层:name为ip,type为innerproduct,输入数据data,输出数据ip
第三层:name为loss,type为SoftmaxWithLoss,有两个输入,一个为ip,一个为label,有一个输出loss。


name:"LogReg"
layer{
name:"mnist"
type:"Data"
top:"data"
top:"label"
data_param{
source:"input_leveldb"
batch_size:64
}
}
layer{
name:"ip"
type:"InnerProduct"
bottom:"data"
top:"ip"
inner_product_param{
num_output:2
}
}
layer{
name:"loss"
type:"SoftmaxWithLoss"
bottom:"ip"
bottom:"label"
top:"loss"
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐