caffe中的数据结构解析.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
caffe中的数据结构解析

?caffe中数据结构主要包括caffe::Net,caffe::Layer,caffe::Solver三个主要大类。下面就这三个主要的数据结构做一下总结。 1,caffe:Net:这个数据结构用来表示整个网络,这个数据结构里包含了很多重要的变量。vector shared_ptr?Layer Dtype ?layers_变量存储的是每层layer结构体的指针。vector shared_ptr?Blob Dtype ?blobs_变量存放的是网络中层与层之间传递的数据,即每层的输入和输出。从这我们可以看出,每层的输入输出并不是存储在对应的层的结构体中的,而是统一存储在Net中。vector vector?Blob Dtype * ?bottom_vecs_变量存储的是每一层的输入的内存首地址,注意这只是存放的指针,真正的数据还是存放在blobs_中。vector vector?Blob Dtype * ?top_vecs_变量存储的是每一层的输出的内存的首地址,注意这也只是存放指针,真正的数据也是在blobs_中。vector shared_ptr?Blob Dtype ?params_存放是网络中每一层的参数。 2,caffe::Layer:这个是存放网络中和每一层有关的数据。vector shared_ptr?Blob Dtype ?blobs_变量存储每层网络的训练参数,通常有blobs_[0]存储该层网络的weight,blobs_[1]存储该层网络的bias。不管是weight还是bias都是具有blob结构,关于blob结构的数据存储具体是什么样的,以后会有总结。vector bool ?param_propagate_down_变量是网络另外一个重要变量,这个变量的作用是标记该层网络做不做反向传播。ector Dtype ?loss_变量是存储每层网络的loss,但是除了loss layer外,基本上其他类型的层的loss都是0。 基于caffe::Layer类衍生出的类有很多中,这里我们具体介绍几个重要的: (1)caffe::BaseConvolutionLayer:这个存储的是convlution层的所需要的参数int?bottom_dim_变量存储的是输入数据的宽度。int?top_dim_变量存储的是输出数据的宽度。int?num_是卷积层的batch size。int?out_spatial_dim_表示一张图片经过一个卷积核后的数据宽度。int output_offset_这是一个私有成员。int conv_out_channels_表示这层卷积层有多少个卷积核,这个变量是私有变量。 (2)caffe::PoolingLayer:这个是pooling层的数据结构,存储和pooling相关的参数int?height_,int?width_表示pooling层输入的图像的尺寸。int?pooled_height_,int?pooled_width_表示pooling层输出的图像的尺寸。int?kernel_h_,int?kernel_w_表示pooling的下采样的核的尺寸。int?channels_表示卷积核的数目。 (3)caffe::InnerProductLayer:这个内积层,存储内积层有关的参数。内积就是对数据数据进行加权求和:output=input*weight+biasint?M_表示一个batch中的样本数目,即input矩阵的行数目。int?K_表示输入数据的宽度,即input矩阵的列数目和weight矩阵的行数目。int?N_表示输出数据的宽度,即weight矩阵的列数目和output矩阵的列数目。Blob Dtype ?bias_multiplier_表示对bias进行scale的系数,通常为1,即表示不进行scale。 (4)caffe::SoftmaxWithLossLayer:这是代价函数层,在经过两层InnerProductLayer之后,输出的数据宽度就是10,这10个数据每一个数据代表输入数据属于某一个标签的分数。在经过caffe:SoftmaxWithLossLayer之后,输出是一个batch中的所有样本的代价函数cost的平均值。vector?Blob Dtype * ?softmax_bottom_vec_表示该层的输入,数据宽度为10。vector?Blob Dtype * ?softmax_top_vec_表示该层的输出,数据宽度为10。Blob Dtype ?prob_表示该层输出的概率值(输入相对于各个标签的概率值)。int?outer_num_对应一个batch中的样本数量。nt?inner_num_? (5)caff

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档