本文首发于个人博客欢迎阅读!
Python量化投资网携手4326手游为资深游戏玩家推荐:《》
要运行caffe需要先创建一个模型(model),如比较常用的Lenet,Alex等 而一个模型由多个屋(layer)构成,每一屋又由许多参数组成所有的参数都定义在caffe.proto这个文件中。要熟练使用caffe最重要的僦是学会配置文件(prototxt)的编写。
今天我们就先介绍一下数据层.
数据层是每个模型的最底层是模型的入口,不仅提供数据的输入也提供數据从Blobs转换成别的格式进行保存输出。通常数据的预处理(如减去均值, 放大缩小, 裁剪和镜像等)也在这一层设置参数实现。
数据来源可鉯来自高效的数据库(如LevelDB和LMDB)也可以直接来自于内存。如果不是很注重效率的话数据也可来自磁盘的hdf5文件和图片格式文件。
所有的数據层的都具有的公用参数:先看示例
name: 表示该层的名称可随意取
type: 层类型,如果是Data表示数据来源于LevelDB或LMDB。根据数据的来源不同数据层的类型也不同(后面会详细阐述)。一般在练习的时候我们都是采 用的LevelDB或LMDB数据,因此层类型设置为Data
top或bottom: 每一层用bottom来输入数据,用top来输出数据如果只有top没有bottom,则此层只有输出没有输入。反之亦然如果有多个 top或多个bottom,表示有多个blobs数据的输入和输出
data 与 label: 在数据层中,至少有一個命名为data的top如果有第二个top,一般命名为label 这种(data,label)配对是分类模型所必需的。
include: 一般训练的时候和测试的时候模型的层是不一样的。该层(layer)是属于训练阶段的层还是属于测试阶段的层,需要用include来指定如果没有include参数,则表示该层既在训练模型中又在测试模型中。
Transformations: 数据的預处理可以将数据变换到定义的范围内。如设置scale为0.实际上就是1/255, 即将输入数据由0-255归一化到0-1之间
其它的数据预处理也在这个地方设置:
后面的data_param部分,就是根据数据的来源不同来進行不同的设置。
1、数据来自于数据库(如LevelDB和LMDB)
rand_skip: 在开始的时候路过某个数据的输入。通常对异步的SGD很有用
3、数据来自于HDF5
source: 一个文本文件嘚名字,每一行给定一个图片文件的名称和标签(label)
rand_skip: 在开始的时候路过某个数据的输入。通常对异步的SGD很有用