Caffe入门:Caffe概览

个人学习一个东西比较喜欢站在一个全局的角度先了解学习下,培养大局观这样有助于更好的思考整个事情。下面就来先看看Caffe的目录框架(在命令行输入tree -d,可以看到类似如下的结果,有删改,只保留了要重点关注的部分):

.
├── build -> .build_release // 编译结果存放处,目录结构和主目录差不多

├── include   // 头文件存放目录
│   └── caffe
│       ├── layers
│       ├── test
│       └── util

├── python  // Python封装,还有一些好用的工具,如画网络结构图的draw_net.py
│   └── caffe
│       ├── imagenet
│       ├── proto
│       └── test

├── src   // Caffe源代码
│   ├── caffe
│   │   ├── layers // 各个层的具体实现,包含.cu, .cpp文件
│   │   ├── proto
│   │   ├── solvers
│   │   ├── test
│   │   │   └── test_data
│   │   └── util
│   └── gtest

└── tools  // 常用工具源代码,train_net, test_net
    └── extra

Caffe源码阅读顺序:

  1. 阅读src/caffe/proto/caffe.proto文件,了解常用的数据结构,以及Caffe是如何对磁盘读写的,实际上,读写操作由ProtoBuffer自动完成
  2. 阅读include目录下的头文件声明,了解类构造,先从基类开始,提纲挈领,同时尝试思考如何实现的。
  3. 看src目录下的.cpp, .cu文件。先看.cpp文件,.cu是GPU代码,可以看懂.cpp之后再看。如果要进行拓展,实现新的layer,只需派生原有layer即可
  4. 随意玩~可以尝试编写各类工具,集成到tools/目录下,方便使用。

为了在文件中查找某一字段,可以使用Linux文本搜索命令grep:
$ grep -n -H -R “REGISTER_LAYER_CREATOR” *
-n :显示行号
-H:显示文件名
-R:递归查找
所以上面表示,递归查找包含”REGISTER_LAYER_CREATOR”字符串的文件,并显示其行号,文件名

参考资料:

    原文作者:Mordekaiser
    原文地址: https://www.jianshu.com/p/a357f20a5904
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞