要运行caffe,需要mode(train_val.prototxt)和solver(solver.prototxt)组成。
model由多个layer构成,每一layer有许多参数,所有的参数都定义在caffe.proto这个文件中。
层有很多种类型,比如Data,Convolution,Pooling,ReLU等,层之间的数据流动是以Blobs的方式进行,blob代表filter之后的参数。
数据层是每个模型的最底层,是模型的入口,提供数据从Blobs转换成别的格式进行保存输出。
首先,数据的预处理(如减去均值, 放大缩小, 裁剪和镜像等)。
数据来源可以来自高效的数据库(如LevelDB和LMDB),也可以直接来自于内存。如果不是很注重效率的话,数据也可来自磁盘的hdf5文件和图片格式文件。
所有的数据层的都具有的公用参数:
layer {
name: "data" # 自定义
type: "Data" # 数据类型,可选择
# top或bottom: bottom用于输入数据,top用于输出数据。多个top或多个bottom,表示有多个blobs数
# 据的输入和输出。
top: "data" # # 训练数据
top: "label" # 标签,即ground truth
include {
phase: TRAIN # 可选,TRAIN, TEST。该layer是属于训练阶段还是属于测试阶段,需要用include
# 来指定。如果没有include参数,则表示该层既在训练模型中,又在测试模型中。
}
transform_param {
mean_file: "examples/cifar10/mean.binaryproto"
}
data_param {
source: "examples/cifar10/cifar10_train_lmdb"
batch_size: 100
backend: L