Caffe源码(caffe version:09868ac , date: 2015.08.15)中有一些重要文件,这里介绍下caffe.proto文件。

在src/caffe/proto目录下有一个caffe.proto文件。proto目录下除了caffe.proto文件外,还有caffe.pb.h和caffe.pb.cc两个文件,此两个文件是根据caffe.proto文件内容自动生成的。

caffe.proto文件是一个消息格式文件,后缀名为proto. proto文件即消息协议原型定义文件,在该文件中可以通过使用描述性语言来定义程序中需要用到的数据格式。

proto文件是在Protobuf中定义使用的。Protobuf全称为Google Protocol Buffers,是Google的一个开源项目,它是一种结构化数据存储格式。要使用ProtoBuf库,首先需要自己编写一个.proto文件,定义我们程序中需要处理的结构化数据,在Protobuf中,结构化数据被称为Message。在一个.proto文件中可以定义多个消息类型。用Protobuf编译器(protoc.exe)将.proto文件编译成目标语言,会生成对应的.h文件和.cc文件,.proto文件中的每一个消息有(message)一个对应的类。关于Protobuf的更详细介绍可以参考http://blog.csdn.net/fengbingchun/article/details/49977903

编译caffe.proto,使其生成caffe.pb.h和caffe.pb.cc文件:利用Protobuf编译器protoc.exe,通过caffe.proto文件生成caffe.pb.h和caffe.pb.cc,步骤:将protoc.exe拷贝到src/caffe/proto目录下,打开命令提示符,执行:

protoc.exe caffe.proto --cpp_out=./

关于编译Protobuf源码的步骤可以参考:http://blog.csdn.net/fengbingchun/article/details/47905907

caffe.proto文件:

(1)、定义了很多结构化数据,用于构建Caffe网络,即*.prototxt文件中的每个字段名要在caffe.proto中存在;

(2)、负责*.caffemodel数据文件的存储和读取;

(3)、每次向Caffe中增加新的层,相应的caffe.proto文件也需调整,并需重新生成caffe.pb.h/caffe.pb.cc文件;

(4)、注意选择Protobuf的版本要与Caffe中的一致,否则会产生Protobuf版本不一致的error。

GitHubhttps://github.com/fengbingchun/Caffe_Test

最新文章

  1. IOS 更改百度地图的定位图片
  2. Android版的菜谱客户端应用源码完整版
  3. 你必须知道的.NET之特性和属性(转)
  4. windows核心编程---第一章 谈谈windows中的错误处理机制
  5. xunsearch安装配置
  6. zoj 3232 It's not Floyd Algorithm(强联通分量,缩点)
  7. HTTP请求中浏览器缓存
  8. 分享一个Web弹框类
  9. LeetCode Binary Tree Level Order Traversal (按层收集元素)
  10. debug连线指令
  11. JS简单实现分页显示
  12. HTML表单简单练习
  13. MATLAB R2017a 进入主界面以后一直处于初始化状态的解决办法
  14. bzoj2252 矩阵距离
  15. JavaSE | 接口| 枚举| 注释| 异常
  16. prometheus的agent 二次开发代码参考
  17. Hiho #1075: 开锁魔法III
  18. iis 发布asp.net mvc 网站时候js css 压缩问题,图片不加载问题
  19. UI5-文档-4.15-Nested Views
  20. HttpClient和HttpGet 参数的优先级

热门文章

  1. JavaScript非数字(中文)排序
  2. svn下已add文件如何忽略
  3. [20180730]exadata与行链接.txt
  4. [20171225]RMAN-06808: SECTION SIZE cannot be used when piece limit is in effect.txt
  5. 将 Azure VM 迁移到 Azure 中的托管磁盘
  6. centos6.5下oracle11g开机自动启动方法一
  7. 什么是ORM?为啥要是用ORM?
  8. Linux 小知识翻译 - 「为什么安全是互联网的问题?」
  9. NSObject
  10. VRS生成的虚拟观测值存在的问题