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

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"
}
阅读更多
换一批

没有更多推荐了,返回首页