训练caffe 时out 穿越火线of memoryy怎么解决

本文首发于个人博客欢迎阅读!

    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之间

其它的数据预处理也在这个地方设置:

# 用┅个配置文件来进行均值操作 # 剪裁一个 227*227的图块,在训练阶段随机剪裁在测试阶段从中间裁剪

后面的data_param部分,就是根据数据的来源不同来進行不同的设置。

1、数据来自于数据库(如LevelDB和LMDB)

  rand_skip: 在开始的时候路过某个数据的输入。通常对异步的SGD很有用

3、数据来自于HDF5

  source: 一个文本文件嘚名字,每一行给定一个图片文件的名称和标签(label)

  rand_skip: 在开始的时候路过某个数据的输入。通常对异步的SGD很有用

我要回帖

更多关于 穿越火线of memory 的文章

 

随机推荐