数据能过数据层进入 caffe 网络:数据层处于网络的最底层。
数据可以从
高效率的数据库中读取(如LevelDB或LMDB), 可以直接从
内存中读取, 若对读写效率要求不高也可以从
硬盘上的HDFT文件或者
普通的图片文件读取。
常见的数据预处理操作(减均值,尺度变换,随机裁剪或者镜像)可以能过设定参数
TransformationParameter 来实现。
数据库 Database
- 层类型: Data
参数
Required(必须的参数)
- source: 数据库文件的路径
- batch_size:网络单次输入数据的数量
Optional(可选的)
- rand_skip: 跳过开头的 rand_skip * rand(0,1)个数据,通常在异步随机梯度下降法里使用;
- backend [default LEVELDB]: 选择使用 LEVELDB 还是 LMDB。
内存数据 In-Memory
memory data 层直接从内存中读取数据而不用拷贝。
使用这个层时需要调用MemoryDataLayer::Reset (C++)或者Net.set_input_arrays(Python)来指定数据来源(四维按行存储的数组), 每次读取一个大小为batch-sized的数据块。
- 层类型: MemoryData
参数
Required(必须的参数)
- batch_size, channels, height, width: 指定从内存中读取的输入数据块的尺寸
HDF5 Input
- 层类型: HDF5Data
参数
Required(必须的参数)
- source: 文件路径;
- batch_size
HDF5 Output
HDF5 output 层执行了一个与数据读取相反的操作, 它将数据写进硬盘。
- 层类型: HDF5Output
参数
Required(必须的参数)
- file_name: 写入文件的路径
图像数据 Images
- 层类型: ImageData
参数
Required(必须的参数)
- source: text 文件的路径名,该 text 文件的每一行存储一张图片的路径名和对应的标签;
- batch_size: 打包成 batch 的图片数量。
Optional(可选的)
- rand_skip
- shuffle [default false]
- new_height, new_width: 根据设置的值,输入的图片将会被调整成给定的尺寸。
窗口 Windows
WindowData
Dummy
DummyData 主要用来开发和调试, 详细介绍见 DummyDataParameter。