Caffe的layer解析

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

1. Caffe中的layer

在Caffe中,神经网络Net是由一层层的神经网络层layer组合构建出来的,神经网络结构位于主要是在.prototxt文件中。Caffe中的layer分为Data Layers、Vision Layers、Recurrent Layers、Common Layers、Normalization Layers、Activation/Neuron Layers、Utility Layers、Loss Layers等。下面对这些layer进行一一的介绍。

2. Data Layer

Data Layer是数据层,主要用来向神经网络中输入训练数据的,它支持的输入数据类型有:

  • Image Data
    读取原始图像数据

  • Database
    从LEVELDB或LMDB中读取数据

  • HDF5 Input
    读取HDF5数据,数据可以是任意维度的

  • HDF5 Output
    输出HDF5数据

  • Input
    通常在部署神经网络时使用

  • Window Data - read window data file.
    存在硬盘上的图片,需要在一个txt里指定用于训练图片以及bounding box。

  • Memory Data
    直接从内存中读取数据

  • Dummy Data
    静态数据和调试

Data Layer的定义如下:

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

name:用来定义layer的名字,没有限制。
type:layer的类型,具体类型可参考http://caffe.berkeleyvision.org/tutorial/layers.html
top:layer的输出数据,由于是分类问题,因此有两个top,数据和标签。
bottom:layer的输入数据。
source:表示训练数据或测试数据的地址,必须有。
batch_size:一次训练或测试多少幅数据,必须有。
bakcend:可选,默认为LEVELDB。
include:表明该层属于训练阶段还是测试阶段,如果不指定,表示两个阶段都包括。

如果有收获,可以请我喝杯咖啡!