layer {
name: "my_data"
type: "Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
transform_param {
mean_file: "/home/hanwannan/mean.binaryproto"
scale: 0.00390625
mirror: 1 # 1表示开启数据增强,0表示关闭,也可用ture和false来表示
# 剪裁一个 32*32的图块,在训练阶段随机剪裁,在测试阶段从中间裁剪
crop_size: 32
}
data_param {
source: "/home/hanwannan/train_lmdb"
batch_size: 128
backend: LMDB
}
}
name: 表示该层的名称,可随意取
type: 层类型,如果是Data,表示数据来源于LevelDB或LMDB。根据数据的来源不同,数据层的类型也不同。
top或bottom: 每一层用bottom来输入数据,用top来输出数据。如果只有top没有bottom,则此层只有输出,没有输入。反之亦然。如果有多个 top或多个bottom,表示有多个blobs数据的输入和输出。
data 与 label: 在数据层中,至少有一个命名为data的top。如果有第二个top,一般命名为label。 这种(data,label)配对是分类模型所必需的。
include: 一般训练的时候和测试的时候,模型的层是不一样的。如果phase为TRAIN,该层是属于训练阶段的层,如果phase为TEST属于测试阶段的层。如果没有include参数,则表示该层既在训练模型中,又在测试模型中。
Transformations:
数据的预处理,可以将数据变换到定义的范围内。
scale : 0.00390625,实际上就是1.0/256, 即将输入数据由0-255归一化到0-1之间
mean_file : 均值文件(如何生成后续会发代码)
mirror: 1 1表示开启数据增强,0表示关闭,也可用ture和false来表示
crop_size: 32# 剪裁一个 32*32的图块,在训练阶段随机剪裁,在测试阶段从中间裁剪
data_param参数就是根据数据的来源不同,来进行不同的设置。
数据来自于数据库如LMDB的参数配置
必选参数:
source: 数据集路径,如/home/hanwannan/train_lmdb(后续会发表lmdb数据集制作方法)
batch_size: 每次处理的数据个数,如128
可选的参数:
rand_skip: 在开始的时候,路过某个数据的输入。通常对异步的SGD很有用。
backend: 选择是采用LevelDB还是LMDB, 默认是LevelDB.