转自:::http://yufeigan.github.io/2014/12/09/Caffe学习笔记1-安装以及代码结构/

目录结构

caffe文件夹下主要文件: 这表示文件夹

主要文件夹

data 用于存放下载的训练数据 
docs 帮助文档 
example 一些代码样例 
matlab MATLAB接口文件 
python Python接口文件 
model 一些配置好的模型参数 
scripts 一些文档和数据用到的脚本

是核心代码文件夹:

tools 保存的源码是用于生成二进制处理程序的,caffe在训练时实际是直接调用这些二进制文件。 
include Caffe的实现代码的头文件 
src 实现Caffe的源文件 
后面的学习主要围绕后面两个文件目录(include和src)下的代码展开

源码结构

由于include和src两个目录在层次上基本一一对应因此主要分析src即可了解文件结构。

这里顺便提到一个有意思的东西,我是在Sublime上面利用SublimeClang插件分析代码的(顺便推荐下这插件,值得花点时间装)。在配置的时候发现会有错误提示找不到”caffe/proto/caffe.pb.h”,去看了下果然没有,但编译的时候没有报错,说明是生成过后又删除了,查看Makefile文件后发现这里用了proto编译的,所以在”src/caffe/proto”下面用CMakeLists文件就可以编译出来了。

src 
gtest google test一个用于测试的库你make runtest时看见的很多绿色RUN OK就是它,这个与caffe的学习无关,不过是个有用的库 
caffe 关键的代码都在这里了 
test 用gtest测试caffe的代码 
util 数据转换时用的一些代码。caffe速度快,很大程度得益于内存设计上的优化(blob数据结构采用proto)和对卷积的优化(部分与im2col相关)[1]。 
proto 即所谓的“Protobuf”[2],全称“Google Protocol Buffer”,是一种数据存储格式,帮助caffe提速。 
layers 深度神经网络中的基本结构就是一层层互不相同的网络了,这个文件夹下的源文件以及目前位置“src/caffe”中包含的我还没有提到的所有.cpp文件就是caffe的核心目录下的核心代码了。 
源码主要关系 
如上所言我们现在可以知道,caffe核心中的核心是下面的文档和文件:(这部分目前不清楚的地方先参照别人的观点)

blob[.cpp .h] 基本的数据结构Blob类[3]。 
common[.cpp .h] 定义Caffe类 
internal_thread[.cpp .h] 使用boost::thread线程库 
net[.cpp .h] 网络结构类Net 
solver[.cpp .h] 优化方法类Solver 
data_transformer[.cpp .h] 输入数据的基本操作类DataTransformer 
syncedmem[.cpp .h] 分配内存和释放内存类CaffeMallocHost,用于同步GPU,CPU数据 
layer_factory.cpp layer.h 层类Layer 
layers 此文件夹下面的代码全部至少继承了类Layer

caffe目录结构 及 caffe源码文件说明相关推荐

  1. Go 学习笔记(2)— 安装目录、工作区、源码文件和标准命令

    GOROOT: Go 语言安装根目录的路径,也就是 GO 语言的安装路径. GOPATH: 若干工作区目录的路径.是我们自己定义的工作空间.在 Go Module 模式之前非常重要,现在基本上用来存放 ...

  2. U-Boot 之三 U-Boot 源码文件解析及移植过程详解

      在之前的博文 Linux 之八 完整嵌入式 Linux 环境介绍及搭建说明 中我们说了要一步步搭建整个嵌入式 Linux 运行环境.我所使用的硬件平台及整个要搭建的嵌入式 Linux 环境见博文 ...

  3. IntelliJ IDEA for Mac 如何配置项目模块的源代码根目录_源码文件的根目录

    按下组合键 Command + ; 打开[项目结构]配置窗口:然后选择左侧菜单栏的[Modules]:然后在右侧的模块列表中,选择你要配置的模块:接着选择右侧界面中的[Sources]标签. 首先添加 ...

  4. U-Boot 之零 源码文件、启动阶段(TPL、SPL)、FALCON、设备树

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,在之前的博文 Linux 之八 完整嵌入式 Linux 环境.(交叉)编译工具链.CPU 体系架构.嵌入式系统构建工具 中详细介绍了嵌 ...

  5. linux python源码目录结构,TensorFlow0.8源码阅读 -- 代码目录结构讲解

    TensorFlow0.8发布以来受到了大量机器学习领域爱好者的关注,目前其项目在github上的follow人数在同类项目中排名第一.作为google的第一个开源项目,TensorFlow的源码结构 ...

  6. java jpg结构_Java Class 字节码文件结构分析----附带逐字节码分析图

    欢迎访问我的博客,同步更新: 枫山别院 今天给大家分享下Java Class字节码文件的结构解析.(文末附有详细大图) 代码 首先我们创建一个Java类,然后添加一些成员变量和方法,如下: publi ...

  7. python源码文件_从源代码生成Python文件

    最后,我找到了一个解决方案,它涉及到python源代码和其他相关文件的符号链接,这些文件没有编译,但在构建环境中是必需的.为了允许将构建的模块与符号链接混合使用,我使用了真正的文件夹而不是符号链接.在 ...

  8. Android源码文件夹结构

    Android 2.2 |-- Makefile |-- bionic               (bionic C库) |-- bootable            (启动引导相关代码) |-- ...

  9. visual studio如何给源码文件添加header信息?(创建者,创建日期等)(License Header Manager插件)

    文章目录 示例 在visual studio扩展处下载此插件: https://marketplace.visualstudio.com/items?itemName=StefanWenig.Lice ...

  10. C#MUD英雄大作战二、乔峰篇(副源码文件连接)

    目录 开发环境: 编码 源码地址: 开发环境: 系统环境:Win10 开发工具:VS2019 语言:C# 项目:控制台应用(.NET Framework) 编码 英雄类:(更换namespace即可) ...

最新文章

  1. a标签怎么传参_jsp页面中怎么利用a标签的href进行传递参数以及需要注意的地方...
  2. windows 平台使用 VS2017 编译 libevent 源码
  3. 桌面支持--ZWMECH软件卸载工具
  4. 趁热打铁-一次.Net WebService的性能优化之旅
  5. php调用css类,php – 使用xpath选择css类
  6. 7z apache解析漏洞_解析漏洞(Web漏洞及防御)
  7. 物理学家杨振宁到底有多厉害?
  8. 程序员为什么要少写代码?
  9. 如何设置 jqplot 图表插件的轴和网格
  10. 通过命令行安装或卸载Tomcat服务
  11. iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用
  12. VS工程下的tlb, tlh, tli文件说明(COM)
  13. linux环境安装的odac,net不安装Oracle11g客户端直接使用ODAC
  14. 讲解【分布式事务】的一篇良心之作!
  15. ObjectARX标注公差简单实例
  16. ICP经营许可证需要多久能够下证
  17. 【GMS认证】关于GSI和VTS解锁刷镜像命令总结
  18. xy苹果助手未受信任_苹果应用掉证书?突然打不开怎么办?
  19. 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》
  20. css背景渐变神器(Cool Backgrouds)一键生成

热门文章

  1. 第二季-专题5-核心初始化
  2. 凸优化第九章无约束优化 作业题
  3. WEB-ERROR-PAGE
  4. Create a virtualbox Based CentOS 6 OpenStack Cloud Image
  5. 30而立--男人必须明白的事
  6. ZooKeeper 初体验
  7. 在C#中使用SQL语句什么情况需要使用‘单引号’和“双引号”
  8. Spring Boot和Dubbo整合
  9. Python-Matplotlib 7 饼状图
  10. swift中闭包的循环引用