caffe源码解析caffeproto.docx

上传人:b****5 文档编号:5654418 上传时间:2022-12-30 格式:DOCX 页数:19 大小:24.56KB
下载 相关 举报
caffe源码解析caffeproto.docx_第1页
第1页 / 共19页
caffe源码解析caffeproto.docx_第2页
第2页 / 共19页
caffe源码解析caffeproto.docx_第3页
第3页 / 共19页
caffe源码解析caffeproto.docx_第4页
第4页 / 共19页
caffe源码解析caffeproto.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

caffe源码解析caffeproto.docx

《caffe源码解析caffeproto.docx》由会员分享,可在线阅读,更多相关《caffe源码解析caffeproto.docx(19页珍藏版)》请在冰豆网上搜索。

caffe源码解析caffeproto.docx

caffe源码解析caffeproto

要看caffe源码,首先应该看的就是caffe.proto。

 

它位于…\src\caffe\proto目录下,在这个文件夹下还有一个.pb.cc和一个.pb.h文件,这两个文件都是由caffe.proto编译而来的。

 

在caffe.proto中定义了很多结构化数据,包括:

∙BlobProto

∙Datum

∙FillerParameter

∙NetParameter

∙SolverParameter

∙SolverState

∙LayerParameter

∙ConcatParameter

∙ConvolutionParameter

∙DataParameter

∙DropoutParameter

∙HDF5DataParameter

∙HDF5OutputParameter

∙ImageDataParameter

∙InfogainLossParameter

∙InnerProductParameter

∙LRNParameter

∙MemoryDataParameter

∙PoolingParameter

∙PowerParameter

∙WindowDataParameter

∙V0LayerParameter

caffe.proto中的几个重要数据类型

caffe.pb.cc里面的东西都是从caffe.proto编译而来的,无非就是一些关于这些数据结构(类)的标准化操作,比如

voidCopyFrom();

voidMergeFrom();

voidClear();

boolIsInitialized()const;

intByteSize()const;

boolMergePartialFromCodedStream();

voidSerializeWithCachedSizes()const;

SerializeWithCachedSizesToArray()const;

intGetCachedSize()

voidSharedCtor();

voidSharedDtor();

voidSetCachedSize()const;

<0>BlobProto

messageBlobProto{//blob的属性以及blob中的数据(data\diff)

optionalint32num=1[default=0];

optionalint32channels=2[default=0];

optionalint32height=3[default=0];

optionalint32width=4[default=0];

repeatedfloatdata=5[packed=true];

repeatedfloatdiff=6[packed=true];

}

<1>Datum

messageDatum{

optionalint32channels=1;

optionalint32height=2;

optionalint32width=3;

optionalbytesdata=4;//真实的图像数据,以字节存储(bytes)

optionalint32label=5;

repeatedfloatfloat_data=6;//datum也能存float类型的数据(float)

}

<2>LayerParameter

messageLayerParameter{

repeatedstringbottom=2;//输入的blob的名字(string)

repeatedstringtop=3;//输出的blob的名字(string)

optionalstringname=4;//层的名字

enumLayerType{//层的枚举(enum,和c++中的enum一样)

NONE=0;

ACCURACY=1;

BNLL=2;

CONCAT=3;

CONVOLUTION=4;

DATA=5;

DROPOUT=6;

EUCLIDEAN_LOSS=7;

ELTWISE_PRODUCT=25;

FLATTEN=8;

HDF5_DATA=9;

HDF5_OUTPUT=10;

HINGE_LOSS=28;

IM2COL=11;

IMAGE_DATA=12;

INFOGAIN_LOSS=13;

INNER_PRODUCT=14;

LRN=15;

MEMORY_DATA=29;

MULTINOMIAL_LOGISTIC_LOSS=16;

POOLING=17;

POWER=26;

RELU=18;

SIGMOID=19;

SIGMOID_CROSS_ENTROPY_LOSS=27;

SOFTMAX=20;

SOFTMAX_LOSS=21;

SPLIT=22;

TANH=23;

WINDOW_DATA=24;

}

optionalLayerTypetype=5;//层的类型

repeatedBlobProtoblobs=6;//blobs的数值参数

repeatedfloatblobs_lr=7;//学习速率(repeated),如果你想设置一个blob的学习速率,你需要设置所有blob的学习速率。

repeatedfloatweight_decay=8;//权值衰减(repeated)

//相对于某一特定层的参数(optional)

optionalConcatParameterconcat_param=9;

optionalConvolutionParameterconvolution_param=10;

optionalDataParameterdata_param=11;

optionalDropoutParameterdropout_param=12;

optionalHDF5DataParameterhdf5_data_param=13;

optionalHDF5OutputParameterhdf5_output_param=14;

optionalImageDataParameterimage_data_param=15;

optionalInfogainLossParameterinfogain_loss_param=16;

optionalInnerProductParameterinner_product_param=17;

optionalLRNParameterlrn_param=18;

optionalMemoryDataParametermemory_data_param=22;

optionalPoolingParameterpooling_param=19;

optionalPowerParameterpower_param=21;

optionalWindowDataParameterwindow_data_param=20;

optionalV0LayerParameterlayer=1;

}

<3>NetParameter

messageNetParameter{

optionalstringname=1;//网络的名字

repeatedLayerParameterlayers=2;//repeated类似于数组

repeatedstringinput=3;//输入层blob的名字

repeatedint32input_dim=4;//输入层blob的维度,应该等于(4*#input)

optionalboolforce_backward=5[default=false];//网络是否进行反向传播。

如果设置为否,则由网络的结构和学习速率来决定是否进行反向传播。

}

<4>SolverParameter

messageSolverParameter{

optionalstringtrain_net=1;//训练网络的protofile

optionalstringtest_net=2;//测试网络的protofile

optionalint32test_iter=3[default=0];//每次测试时的迭代次数

optionalint32test_interval=4[default=0];//两次测试的间隔迭代次数

optionalbooltest_compute_loss=19[default=false];

optionalfloatbase_lr=5;//基本学习率

optionalint32display=6;//两次显示的间隔迭代次数

optionalint32max_iter=7;//最大迭代次数

optionalstringlr_policy=8;//学习速率衰减方式

optionalfloatgamma=9;//关于梯度下降的一个参数

optionalfloatpower=10;//计算学习率的一个参数

optionalfloatmomentum=11;//动量

optionalfloatweight_decay=12;//权值衰减

optionalint32stepsize=13;//学习速率的衰减步长

optionalint32snapshot=14[default=0];//snapshot的间隔

optionalstringsnapshot_prefix=15;//snapshot的前缀

optionalboolsnapshot_diff=16[default=false];//是否对于diff进行snapshot

enumSolverMode{

CPU=0;

GPU=1;

}

optionalSolverModesolver_mode=17[default=GPU];//solver的模式,默认为GPU

optionalint32device_id=18[default=0];//GPU的ID

optionalint64random_seed=20[default=-1];//随机数种子

}

caffe.proto源码

//Copyright2014BVLCandcontributors.

packagecaffe;

messageBlobProto{

optionalint32num=1[default=0];

optionalint32channels=2[default=0];

optionalint32height=3[default=0];

optionalint32width=4[default=0];

repeatedfloatdata=5[packed=true];

repeatedfloatdiff=6[packed=true];

}

//TheBlobProtoVectorissimplyawaytopassmultipleblobprotoinstances

//around.

messageBlobProtoVector{

repeatedBlobProtoblobs=1;

}

messageDatum{

optionalint32channels=1;

optionalint32height=2;

optionalint32width=3;

//theactualimagedata,inbytes

optionalbytesdata=4;

optionalint32label=5;

//Optionally,thedatumcouldalsoholdfloatdata.

repeatedfloatfloat_data=6;

}

messageFillerParameter{

//Thefillertype.

optionalstringtype=1[default='constant'];

optionalfloatvalue=2[default=0];//thevalueinconstantfiller

optionalfloatmin=3[default=0];//theminvalueinuniformfiller

optionalfloatmax=4[default=1];//themaxvalueinuniformfiller

optionalfloatmean=5[default=0];//themeanvalueinGaussianfiller

optionalfloatstd=6[default=1];//thestdvalueinGaussianfiller

//Theexpectednumberofnon-zeroinputweightsforagivenoutputin

//Gaussianfiller--thedefault-1meansdon'tperformsparsification.

optionalint32sparse=7[default=-1];

}

messageNetParameter{

optionalstringname=1;//considergivingthenetworkaname

repeatedLayerParameterlayers=2;//abunchoflayers.

//Theinputblobstothenetwork.

repeatedstringinput=3;

//Thedimoftheinputblobs.Foreachinputblobthereshouldbefour

//valuesspecifyingthenum,channels,heightandwidthoftheinputblob.

//Thus,thereshouldbeatotalof(4*#input)numbers.

repeatedint32input_dim=4;

//Whetherthenetworkwillforceeverylayertocarryoutbackwardoperation.

//IfsetFalse,thenwhethertocarryoutbackwardisdetermined

//automaticallyaccordingtothenetstructureandlearningrates.

optionalboolforce_backward=5[default=false];

}

messageSolverParameter{

optionalstringtrain_net=1;//Theprotofileforthetrainingnet.

optionalstringtest_net=2;//Theprotofileforthetestingnet.

//Thenumberofiterationsforeachtestingphase.

optionalint32test_iter=3[default=0];

//Thenumberofiterationsbetweentwotestingphases.

optionalint32test_interval=4[default=0];

optionalbooltest_compute_loss=19[default=false];

optionalfloatbase_lr=5;//Thebaselearningrate

//thenumberofiterationsbetweendisplayinginfo.Ifdisplay=0,noinfo

//willbedisplayed.

optionalint32display=6;

optionalint32max_iter=7;//themaximumnumberofiterations

optionalstringlr_policy=8;//Thelearningratedecaypolicy.

optionalfloatgamma=9;//Theparametertocomputethelearningrate.

optionalfloatpower=10;//Theparametertocomputethelearningrate.

optionalfloatmomentum=11;//Themomentumvalue.

optionalfloatweight_decay=12;//Theweightdecay.

optionalint32stepsize=13;//thestepsizeforlearningratepolicy"step"

optionalint32snapshot=14[default=0];//Thesnapshotinterval

optionalstringsnapshot_prefix=15;//Theprefixforthesnapshot.

//whethertosnapshotdiffintheresultsornot.Snapshottingdiffwillhelp

//debuggingbutthefinalprotocolbuffersizewillbemuchlarger.

optionalboolsnapshot_diff=16[default=false];

//themodesolverwilluse:

0forCPUand1forGPU.UseGPUindefault.

enumSolverMode{

CPU=0;

GPU=1;

}

optionalSolverModesolver_mode=17[default=GPU];

//thedevice_idwillthatbeusedinGPUmode.Usedevice_id=0indefault.

optionalint32device_id=18[default=0];

//Ifnon-negative,theseedwithwhichtheSolverwillinitializetheCaffe

//randomnumbergenerator--usefulforreproducibleresults.Otherwise,

//(andbydefault)initializeusingaseedderivedfromthesystemclock.

optionalint64random_seed=20[default=-1];

}

//Amessagethatstoresthesolversnapshots

messageSolverState{

optionalint32iter=1;//Thecurrentiteration

optionalstringlearned_net=2;//Thefilethatstoresthelearnednet.

repeatedBlobProtohistory=3;//Thehistoryforsgdsolvers

}

//UpdatethenextavailableIDwhenyouaddanewLayerParameterfield.

//

//LayerParameternextavailableID:

23(lastadded:

memory_data_param)

messageLayerParameter{

repeatedstringbottom=2;//thenameofthebottomblobs

repeatedstringtop=3;//thenameofthetopblobs

optionalstringname=4;//thelayername

//AddnewLayerTypestotheenumbelowinlexicographicalorder(otherthan

//startingwithNONE),startingwiththenextavailableIDinthecomment

//lineabovetheenum.UpdatethenextavailableIDwhenyouaddanew

//LayerType.

//

//LayerTypenextavailableID:

30(lastadded:

MEMORY_DATA)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1