caffe网络模型各层详解(一)

一:数据层及参数

caffe层次有许多类型,比如Data,Covolution,Pooling,层次之间的数据流动是以blobs的方式进行

首先,我们介绍数据层:

数据层是每个模型的最底层,是模型的入口,通常数据的 预处理(如去均值,放大缩小,裁剪和镜像等)也在这一层设置参数实现。

数据来源一般来自高效的数据库(levelDb和LMDB),也可以来自内存,如果注重效率,可以来自磁盘的hdf5文件和图片格式文件。

层次实例如下:

 1 layer{
 2     name:"cifar"
 3     type: "Data"
 4     top: "data"
 5     top: "label"
 6     include{
 7         phase:TRAIN
 8     }
 9     transform_param{
10         mean_file: "examples/cifar10/mean.binaryproto"
11     }
12     data_param{
13         source: "examples/cifar10/cifar10_train_lmdb"
14         batch_size: 100
15         backend:LMDB
16     }
17 }

 层次参数解释:

name : 表示该层的名称,可以随意取

type : 层类型,如果是Data,表示数据来源于LevelDB或者LMDB。一般采用这两种数据

top/bottom: 每一层用bottom来表述输入数据,top表述输出数据。如果只有top没有bottom,则此层只有输出没有输入,反之亦然。如果有多个top或bottom,表述有多个blobs数据的输入和输出。

data/label:在数据层中,至少有一个命名为data的top。如果两个top,一般命名为label,(data,label)配对是分类模型所必须的。

include:一般训练和测试的测试的时候,模型的层不一样。include用以区分是train还是test,如果没有include表述该层既做训练也做测试。

Transformations:数据的预处理,可以对数据进行变换,scale为0.00390625,实际上是1/255,既数据的归一化。

1 transform_param{
2     scale = 0.00390625
3     mane_file_size: "examples/cifar10/mean.binaryproto"
4     //用一个配置文件来进行去均值操作
5     mirror:1 //1表示开启镜像,0表示关闭,也可以用true和false表示
6     //剪裁一个277*277的图块,在训练阶段随机裁剪,在测试阶段从中间剪裁
7     crop_size: 227                
8 }
posted @ 2017-01-05 16:26  圆滚滚的小峰峰  阅读(612)  评论(0编辑  收藏  举报