第7天 Caffe代码梳理
7.1Caffe目录结构
build——编译结果存放处,子目录结构与主目录类似
cmake——实用CMake编译时会用到,不关注
External
Modules
Templates
data——用于存放原始数据及数据获取脚本
cifar10
distribute——编译后生成发布包的位置,用于迁移
bin
lib
docker——同样是为了迁移,使用了Docker工具
docs——doxygen工程文件放在这里
_layouts
images
stylesheets
tutorial
examples——存放Caffe简单例程
include——Caffe头文件集中存放于这个目录
caffe
layers
test
util
matlab——适用于MATLAB做Wrapper,具体可以参考RCNN源码
+caffe
+test
imagenet
private
demo
hdf5creation
models——存放示例模型
python——用于python Wrapper
scripts——存放脚本
src——Caffe源码
caffe
layers
proto
solvers
test
test_data
util
gtest
tools——常用工具源码
extra
7.2 如何有效阅读Caffe源码
1、 src/caffe/proto/caffe.proto
了解基本数据结构内存对象和磁盘文件的一一映射关系。
2、 看头文件
h——>cpp,先通过头文件类声明理解整个框架,再顺藤摸瓜。
3、 有针对性的看cpp和su文件
一般Caffe框架不需要大改,按需求派生新的类即可。
4、编写各类工具,集成到Caffe内部
tools下工具:Eg:训练模型、测试模型、特征提取、转换数据格式等,可进行修改。
学习Python或Matlab包装Caffe的方法。便与调节模型训练效果。
7.2.1 调查ProtoBuffer
看不太懂......于是先到网上查caffe.proto,看看别人的阅读经验
阅读了以下CSDN博文:关于ProtoBuffer的介绍
https://blog.csdn.net/caisini_vc/article/details/5599468
http://www.cnblogs.com/stephen-liu74/archive/2013/01/02/2841485.html
http://www.cnblogs.com/stephen-liu74/archive/2013/01/04/2842533.html?nsukey=lP/q0Ph3HWaVPr0t2KWdI
enum UserStatus{ //enum 枚举类型定义关键字
OFFLINE = 0; //表示出于离线状态的用户
ONLINE = 1; //表示出于在线状态的用户
}
message Userinfo{ //message 消息定义的关键字:struct、class
required int64 accID = 1;
required string name = 2;
required UserStatus status = 3;
}
message可嵌套
7.2.2 阅读caffe.proto
syntax //(句法),定义引用的proto版本
package caffe; //????
message BlobShape
message BlobProto
message Datum
message FillerParameter
message NetParameter
message SolverParameter
message SolverState
enum Phase
message NetState
message ParamSpec
message LayerParameter
message TransformationParameter
message LossParameter
message AccuracyParameter
message ArgMaxParameter
message ConcatParameter
message ContrastiveLossParameter
message ConvolutionParameter
message DataParameter
message DropoutParameter
message DummyDataParameter
message EltwiseParameter
message ExpParameter
message FlattenParameter
message HDF5DataParameter
message HDF5OutputParameter
message HingeLossParameter
message ImageDataParameter
message InfogainLossParameter
message InnerProductParameter
message LaoParameter
message LRNParameter
message MemoryDataParameter
message MVNParameter
message PoolingParameter
message PythonParameter
message ReductionParameter
message ReLUParameter
message ReshapeParameter
message SliceParameter
message SoftmaxParameter
message TanHParameter
message ThresholdParameter
message WindowDataParameter
message SPPParemeter
message V1LayerParameter
message V0LayerParameter
7.2.3 Caffe源码
看不太懂......以后再看