Caffe依赖包解析

Caffe依赖包解析

 caffe安装过程中安装很多依赖的工具包,这些依赖包到底有什么用,本文将分析各个依赖包的组成及作用。有C++基础的读者可以深入阅读源代码,了解一些开源库以节省开发时间。

1.ProtoBuffer

 ProtoBuffer是由Google开发的一种可以实现内存与非易失存储介质(如硬盘文件)交换的协议接口。Caffe源码中大量使用ProtoBuffer作为权值和模型参数的载体。一般开发者对参数管理各有喜好,有人喜欢TXT的易于修改,有人喜欢BIN的读写高效,有人喜欢图形化配置直观形象。不一致的参数管理带来很多问题,例如,一个项目组内不同成员必须约定一套统一的参数方案,或者称为通信协议,才便于模块集成。ProtoBuffer工具完美地解决了这个问题,用户只需要建立统一的参数描述文件(proto),然后利用protoc编译就能让协议细节等关键部分代码自动生成,节省了大量的开发、调试时间。使用ProtoBuffer还可以跨语言(C++/Java/Python)传递相同的数据结构,让团队协作更有效率。
 Caffe源码框架中找到models/bvlc_reference_caffenet/solver.prototxt文件,用vim打开,看到如下内容:

![这里写图片描述](https://img-blog.csdn.net/20170215154825423?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjU2MjI3Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
 这里面记录了一些模型训练所需要的超参数(Hyper-Parameter),用Caffe训练时会首先读取该文件,获得特定字段的数值,并据此设置内存中模型训练时的超参数数量值,从文件读取到内存的过程就是有ProtoBuffer工具协助完成的。下面我们写一个简单的测试程序。  从编译好的Caffe目录中找到build目录,并查看生成的ProtoBuffer相关的API文件: $ls build/src/caffe/proto/ caffe.pb.cc caffe.pb.d caffe.pb.h caffe.pb.o caffe.pb.o.warnings.txt  其中,caffe.pb.h和caffe.pb.cc就是用于解析caffe参数配置文件、将模型权值序列化、反序列化到磁盘的协议接口。我们编写测试程序如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值