caffe 半精度增加数据怎么降低了精度

在使用caffe时,我们希望使用自己的数据进行训练,以下给出如何制作自己的数据。所有的数据制作都是基于imagenet的。
1.数据准备,我们需要一个train和valid文件夹,一个train.txt和val.txt(图片文件夹的位置可以任意,但是这两个txt文件的位置在data/mydata/目录下)
train和valid文件夹自然就存放着待训练的图片,train.txt和val.txt的数据格式如下
train_example/1.jpg 0
train_example/2.jpg 0
train_example/3.jpg 0
train_example/4.jpg 0
train_example/5.jpg 0
train_example/6.jpg 0
train_example/7.jpg 0
train_example/8.jpg 0
train_example/9.jpg 0
前边是图片路径,后便是label,注意label是从0开始的。
2. 在example目录下创建自己的文件夹mytask,将imagenet中所有的文件烤过来,然后进行修改。
create_imagenet.sh
//当前路径
EXAMPLE=/home/kongtao/caffe-master/examples/voc2007_test1
//存放train.txt和val.txt的路径,就是data/mydata
DATA=/home/kongtao/caffe-master/data/voc2007_data1
TOOLS=/home/kongtao/caffe-master/build/tools
//存放train和val图片文件夹的主目录(这里与txt文件中的目录合起来才是图片目录)
TRAIN_DATA_ROOT=/home/kongtao/learn/cnn_learn/VOC2007_research/VOCdevkit/
VAL_DATA_ROOT=/home/kongtao/learn/cnn_learn/VOC2007_research/VOCdevkit/
运行create_imagenet.sh,生成两个数据文件lmdb
make_image_mean.sh 也是修改相应的路径
最后需要修改的是model中prototxt文件,只需要修改路径
./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt
这样就可以了。
以上完成了一个数据文件的创建和训练的过程,对于我们来说,其实网络架构显得更重要,因此不仅仅是调通,更重要的是调整网络架构和改进,这也是最难得部分。
多chanel,需要对数据进行提前白化
import numpy as np
import caffe
import lmdb
# obviously load your own inputs here -- this is just by way of example
# to show the data can have any channel dimension
# as the dimensions are N x K x H x W
inputs = np.zeros((10, 5, 227, 227))
in_db = lmdb.open('input-lmdb', map_size=int(1e12))
with in_db.begin(write=True) as in_txn:
for in_idx, in_ in enumerate(inputs):
in_dat = caffe.io.array_to_datum(in_)
in_txn.put('{:0&10d}'.format(in_idx), im_dat.SerializeToString())
in_db.close()
记录一下别人制作的东东
http://deepdish.io//creating-lmdb-in-python/
http://blog.csdn.net/ayst123/article/details/
原创文章,转载请注明出处,谢谢!
/taokongcn/p/4341371.html
阅读(...) 评论()caffe测试已经训练好的模型的迭代次数修改
  今天调用训练好的模型进行测试,发现测试的Batch都只有50,并且似乎找不到在prototxt里面修改,所以怀疑是默认值,如果你要测试大量的数据,一方面是在输入的测试模型prototxt中的TEST中修改batch_size,这样比如原来的batch_size是20,那么测试50个Batch就是测试了1000张images.但是我有20000张images可以测试.所以要到caffe源码里面修改这个默认值.
  那这个默认值在哪呢?在caffe/tools/caffe.cpp中的DEFINE_int32(iterations,
50, "The number of iterations to
run."); 只要把50改成你想要的值,然后到caffe目录下,make clean, make all
-j4.编译完成后,重新测试,就发现Batch number随你所欲了.
在这里重新recall一下训练时solver中的test_iter和batch_size等的关系.# test_iter
specifies how many forward passes the test should carry
out.就是做一次test的时候有多少张image参与计算,当这个值很小的时候test很快,很大的时候需要花很长的时间test,为什么呢?caffe在训练过程中的test是将你的batch_size乘以这个test_iter得到每次测试的item
number,so,如果你的显存很小,你可以在train.prototxt里面将test的batch_size变小,但是test_iter变大,这样也是可以的.这两个的乘积就是做一次test所用的数据量,如果你有10000张images做test,test的batch_size为10,那么可以设置test_iter为1000,这样每次test就是用这10000张images做一个forward.那么每次test都是平等地用这10000张images.
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Caffe下自己的数据训练和测试 - CSDN博客
Caffe下自己的数据训练和测试
【原文:】
在caffe提供的例程当中,例如mnist与cifar10中,数据集的准备均是通过调用代码自己完成的,而对于ImageNet1000类的数据库,对于高校实验室而言,常常面临电脑内存不足的尴尬境地。而对于应用者而言,用适合于自己条件的的数据集在caffe下训练及测试才是更重要的。所以我们有必要自己做数据库以及在caffe上训练及测试。&
1,数据准备&
在data中新建文件夹myself,我们截取了ImageNet1000类中的两类—panda与sea_horse,训练panda的图片24张,测试panda的图片6张,训练sea_horse的图片38张,测试sea_horse的图片7张。如图所示:&
培训和测试的输入是用train.txt和val.txt描述的,这些文档列出所有文件和他们的标签。注意,在imagenet1000类中,我们分类的名字是ASCII码的顺序,即0-999,对应的分类名和数字的映射在synset_words.txt(自己写)中。&
运行以下指令:
&code class=&hljs lasso has-numbering& style=&display: padding: 0 background-color: color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-top-left-radius: 0 border-top-right-radius: 0 border-bottom-right-radius: 0 border-bottom-left-radius: 0 word-wrap: background-position: background-repeat:&&find &span class=&hljs-attribute& style=&box-sizing: border-&&-name&/span& &span class=&hljs-subst& style=&color: rgb(0, 0, 0); box-sizing: border-&&*&/span&&span class=&hljs-built_in& style=&color: rgb(102, 0, 102); box-sizing: border-&&.&/span&jpeg &span class=&hljs-subst& style=&color: rgb(0, 0, 0); box-sizing: border-&&|&/span&cut &span class=&hljs-attribute& style=&box-sizing: border-&&-d&/span& &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&'/'&/span& &span class=&hljs-attribute& style=&box-sizing: border-&&-f2&/span&&span class=&hljs-subst& style=&color: rgb(0, 0, 0); box-sizing: border-&&-&/span&&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&3&/span&&span class=&hljs-subst& style=&color: rgb(0, 0, 0); box-sizing: border-&&&&/span& train&span class=&hljs-built_in& style=&color: rgb(102, 0, 102); box-sizing: border-&&.&/span&txt&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 background-color: rgb(238, 238, 238); top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align:&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&/ul&
然后,因为自己的数据库样本数比较少,可以自行手动做分类标签。在train.txt的每个照片后用1-2分类。如图:&
当样本过多,就自己编写指令批量处理。&
同理,获得val.txt。matlab(windows下)批量处理代码如下:
&code class=&hljs delphi has-numbering& style=&display: padding: 0 background-color: color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-top-left-radius: 0 border-top-right-radius: 0 border-bottom-right-radius: 0 border-bottom-left-radius: 0 word-wrap: background-position: background-repeat:&&% batch &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&write&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&in&/span& txt
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&file&/span&=dir(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&'F:\animal\sea_horse'&/span&);
temp=length(&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&file&/span&);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&file&/span&=&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&file&/span&(&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&3&/span&:temp);
fp=fopen(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&'F:\animal\animal.txt'&/span&,&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&'at'&/span&);
% &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&'at'&/span& open &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&or&/span& create &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&file&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&for&/span& reading &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&and&/span& append data &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&to&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&end&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&of&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&file&/span&
% &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&'wt'&/span& discard existing contents
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&for&/span& n=&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&1&/span&:length(&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&file&/span&)
fprintf(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&'iter=%d\n'&/span&,n)
txt=[&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&file&/span&(n).name &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&' 2'&/span& &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&'\n'&/span&];
fprintf(fp,txt);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&end&/span&
fclose(fp);&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 background-color: rgb(238, 238, 238); top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align:&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&li style=&box-sizing: border- padding: 0px 5&&14&/li&&li style=&box-sizing: border- padding: 0px 5&&15&/li&&/ul&
Test.txt不能标签,全部设置成0。&
我们还需要把图片的大小变成256X256,官网上提供了下面的命令:
&code class=&hljs bash has-numbering& style=&display: padding: 0 background-color: color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-top-left-radius: 0 border-top-right-radius: 0 border-bottom-right-radius: 0 border-bottom-left-radius: 0 word-wrap: background-position: background-repeat:&&&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&for&/span& name &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&in&/span& /path/to/imagenet/val/*.JPEG; &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&do&/span&
convert -resize &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&256&/span&x256\! &span class=&hljs-variable& style=&color: rgb(102, 0, 102); box-sizing: border-&&$name&/span& &span class=&hljs-variable& style=&color: rgb(102, 0, 102); box-sizing: border-&&$name&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&done&/span&&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 background-color: rgb(238, 238, 238); top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align:&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&/ul&
但是我自己并没有成功,就只好用matlab(windows下)代码处理了一下:
&code class=&hljs applescript has-numbering& style=&display: padding: 0 background-color: color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-top-left-radius: 0 border-top-right-radius: 0 border-bottom-right-radius: 0 border-bottom-left-radius: 0 word-wrap: background-position: background-repeat:&&&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&for&/span& n=&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&1&/span&:&span class=&hljs-property& style=&box-sizing: border-&&length&/span&(&span class=&hljs-type& style=&box-sizing: border-&&file&/span&)
temp=imread(['F:\animal\panda\' &span class=&hljs-type& style=&box-sizing: border-&&file&/span&(n).&span class=&hljs-property& style=&box-sizing: border-&&name&/span&]);
temp=imresize(temp,&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&2&/span&);
temp=imresize(temp,[&span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&256&/span& &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&256&/span&]);
imwrite(temp,['F:\animal\panda\' &span class=&hljs-type& style=&box-sizing: border-&&file&/span&(n).&span class=&hljs-property& style=&box-sizing: border-&&name&/span&]);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&end&/span&&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 background-color: rgb(238, 238, 238); top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align:&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&/ul&
然后在caffe-master/examples中新建myself文件夹,然后将caffe-maester/examples/imagenet的create_imagenet.sh复制到该文件夹下,将其名改为create_animal.sh,修改训练和测试路径的设置,运行该sh.如图:&
最后得到myself_train_lmdb和myself_val_lmdb:&
2 计算图像均值&
模型需要我们从每张图片减去均值,所以我们必须获得训练的均值,用&
tools/compute_image_mean.cpp实现,这个cpp是一个很好的例子去熟悉如何操作多个组建,例如协议的缓冲区,leveldbs,登录等。我们同样复制caffe-maester/examples/imagenet的&
./make_imagenet_mean到examples/myself中,将其改名为make_animal_mean.sh,加以修改路径。&
3 网络的定义&
把caffe-master/models/bvlc_reference_caffenet中所有文件复制到caffe-master/examples/myself文件夹中,修改train_val.prototxt,注意修改数据层的路径。如图:&
如果你细心观察train_val.prototext,你会发现他们除了数据来源不同和最后一层不同,其他基本相同。在训练中,我们用一个softmax——loss层计算损失函数和初始化反向传播,而在验证,我们使用精度层检测我们的精度。
我们还有一个运行的协议solver.prototxt,复制过来,将第一行路径改为我们的路径net: “examples/myself/train_val.prototxt”,从里面可以观察到,我们将运行256批次,迭代4500000次(90期),每1000次迭代,我们测试学习网络验证数据,我们设置初始的学习率为0.01,每期)次迭代减少学习率,显示一次信息,训练的weight_decay为0.0005,每10000次迭代,我们显示一下当前状态。&
以上是教程的,实际上,以上需要耗费很长时间,因此,我们稍微改一下&
test_iter: 1000是指测试的批次,我们就10张照片,设置10就可以了。&
test_interval: 1000是指每1000次迭代测试一次,我们改成500次测试一次。&
base_lr: 0.01是基础学习率,因为数据量小,0.01就会下降太快了,因此改成0.001&
lr_policy: “step”学习率变化&
gamma: 0.1学习率变化的比率&
stepsize: 0000次迭代减少学习率&
display: 20每20层显示一次&
max_iter: 450000最大迭代次数,&
momentum: 0.9学习的参数,不用变&
weight_decay: 0.0005学习的参数,不用变&
snapshot: 10000每迭代10000次显示状态,这里改为2000次&
solver_mode: GPU末尾加一行,代表用GPU进行
把caffe-master/examples/imagenet中的train_caffenet.sh复制过来并修改名为train_myself.sh运行,修改里面的路径,如图:&
当然,只有两类,正确率还是相当的高,例如迭代到2000次的时候,正确率是0.924,即13张var样本只有1张预测错了。&
5 恢复数据&
把caffe-master/examples/imagenet中的resume_training.sh复制过来并运行。&
我们用指令./即可。
参照材料:学习笔记3 用自己的数据训练和测试“CaffeNet”
Caffe官网 ImageNet tutorial
本文已收录于以下专栏:
相关文章推荐
Caffe 数据集制作及使用
【原文:http://blog.csdn.net/lingerlanlan/article/details/】
caffe源码修改:抽取任意一张图片的特征
一、论文综述类的文章[1]P.Dollar, C. Wojek,B. Schiele, et al. Pedestrian detection: an evaluation of the state ...
[caffe]深度学习之CNN检测object detection方法摘要介绍 
17:44 3276人阅读 评论(1) 收藏 举报
一两年cnn在检测这...
这次使用caffe来对ImageNet进行fine tune,使用的是行人检测数据集INRIA。
首先下载下来INRIA数据集,发现其中有一部分可以直接拿来用作行人检测的正样本。但因为INRIA并不是...
from: http://blog.csdn.net/chenriwei2/article/details/
深度学习可以说是在人脸分析相关领域遍地开花,近年来在人脸识...
from: http://blog.csdn.net/chenriwei2/article/details/
深度学习深似海、尤其是在图像人脸识别领域,最近几年的顶会和顶刊常...
caffe对于训练数据格式,支持:lmdb、h5py……,其中lmdb数据格式常用于单标签数据,像分类等,经常使用lmdb的数据格式。对于回归等问题,或者多标签数据,一般使用h5py数据的格式。当然好...
caffe对于训练数据格式,支持:lmdb、h5py……,其中lmdb数据格式常用于单标签数据,像分类等,经常使用lmdb的数据格式。对于回归等问题,或者多标签数据,一般使用h5py数据的格式。当然好...
最近,在网上搜索关于“行人重识别”及“行人再识别”等关键词,发现几乎都是关于行人检测的内容。对于“行人重(再)识别”技术能找到的资料很少,这可能是因为“行人重(再)识别”技术最近才刚刚兴起吧。总之,除...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Caffe训练分类器不收敛,loss居高不下,原因都是泪
我利用Caffe训练一个基于AlexNet的三分类分类器,将train_val.prototxt的全连接输出层的输出类别数目改为3,训练一直不收敛,loss很高;当把输出改成4或1000(&3)的时候,网络可以收敛。也就是caffenet结构的输出层的类别数一定要大于我训练集的类别数才可以收敛!后来查了半天才发现原因,让我泪奔。。。
原来我把图像类别的label设置成1,2,3,改成0,1,2后,最后全连接层的转出改成3就OK了。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Caffe之数据层及参数
Caffe学习系列(2):数据层及参数:要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等, 而一个模型由多个屋(layer)构成,每一屋又由许多参数组成。所有的参数都定义在caffe.proto这个文件中。要熟练使用caffe,最重要的就是学会配置文件(prototxt)的编写。
层有很多种类型,比如Data,Convolution,Pooling等,层之间的数据流动是以Blobs的方式进行。
今天我们就先介绍一下数据层.
数据层是每个模型的最底层,是模型的入口,不仅提供数据的输入,也提供数据从Blobs转换成别的格式进行保存输出。通常数据的预处理(如减去均值, 放大缩小, 裁剪和镜像等),也在这一层设置参数实现。
数据来源可以来自高效的(如LevelDB和LMDB),也可以直接来自于内存。如果不是很注重效率的话,数据也可来自磁盘的hdf5文件和图片格式文件。
所有的数据层的都具有的公用参数:先看示例
name: &cifar&
type: &Data&
top: &data&
top: &label&
phase: TRAIN
transform_param {
mean_file: &examples/cifar10/mean.binaryproto&
data_param {
source: &examples/cifar10/cifar10_train_lmdb&
batch_size: 100
backend: LMDB
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之间
其它的数据预处理也在这个地方设置:
transform_param {
mean_file_size: &examples/cifar10/mean.binaryproto&
# 用一个配置文件来进行均值操作
# 1表示开启镜像,0表示关闭,也可用ture和false来表示
# 剪裁一个 227*227的图块,在训练阶段随机剪裁,在测试阶段从中间裁剪
crop_size: 227
后面的data_param部分,就是根据数据的来源不同,来进行不同的设置。
1、数据来自于数据库(如LevelDB和LMDB)
层类型(layer type):Data
必须设置的参数:
source: 包含数据库的目录名称,如examples/mnist/mnist_train_lmdb
batch_size: 每次处理的数据个数,如64
可选的参数:
rand_skip: 在开始的时候,路过某个数据的输入。通常对异步的SGD很有用。
backend: 选择是采用LevelDB还是LMDB, 默认是LevelDB.
name: &mnist&
type: &Data&
top: &data&
top: &label&
phase: TRAIN
transform_param {
data_param {
source: &examples/mnist/mnist_train_lmdb&
batch_size: 64
backend: LMDB
2、数据来自于内存
层类型:MemoryData
必须设置的参数:
batch_size:每一次处理的数据个数,比如2
channels:通道数
height:高度
width: 宽度
top: &data&
top: &label&
name: &memory_data&
type: &MemoryData&
memory_data_param{
batch_size: 2
height: 100
width: 100
channels: 1
transform_param {
scale: 0.0078125
mean_file: &mean.proto&
mirror: false
3、数据来自于HDF5
层类型:HDF5Data
必须设置的参数:
source: 读取的文件名称
batch_size: 每一次处理的数据个数

我要回帖

更多关于 caffe 半精度 的文章

 

随机推荐