caffe源码解析caffeproto.docx
- 文档编号:5654418
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:19
- 大小:24.56KB
caffe源码解析caffeproto.docx
《caffe源码解析caffeproto.docx》由会员分享,可在线阅读,更多相关《caffe源码解析caffeproto.docx(19页珍藏版)》请在冰豆网上搜索。
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)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- caffe源码解析 caffeproto caffe 源码 解析