分析caffe源码以及相应的Google c++ style

本人项目需分析caffe源码,并做一些相应的修改

1.caffe源码工程目录

src目录为整个工程的核心,它主要实现了神经网络的基本模型的组件:Blob、Layer、Net、Solver等核心类。

include目录存放整个工程所有头文件。

tools目录中存放了caffe的入口函数,用于参数解析,神经网络配置等。

data目录和examples目录用于提供一些基本例子和相应数据。

matlab和python目录存放用于两者的接口,只要不使用两者,目录下的内容没有实质作用。

其他一些目录和文件是工程的基本配置文件和文档。

测试单元在src目录下的gtest目录,使用了Google Test 测试框架。

2.代码风格采用Google C++ Style

 Include headers in the following order: Related header, C system headers, C++ standard library headers, other libraries‘ headers, your project‘s headers.

上文来自于Google c++ style 文档说明,对于头文件的引用按照上述顺序。

 With few exceptions, place code in a namespace. Namespaces should have unique names based on the project name, and possibly its path. 

上文来自于Google c++ style 文档说明,除了少数意外情况,保证任何一行代码在一个命名空间内,每一个命名空间都要根据其项目和位置有一个唯一的名字。

3.关于函数、类的命名

类的命名保持了简单易懂的原则,能够让读者在第一时间明白类的基本功能

函数的命名和书写写采用项目_功能_性质这样的命名方式。

虽然有很多文档支持,但总体的缺点是代码的注释少。

原文地址:https://www.cnblogs.com/KagariAtsuko/p/11636686.html

时间: 2024-08-11 07:54:40

分析caffe源码以及相应的Google c++ style的相关文章

caffe源码分析--poolinger_layer.cpp

对于采样层,cafffe里实现了最大采样和平均采样的算法. 最大采样,给定一个扫描窗口,找最大值, 平均采样,扫描窗口内所有值的平均值. 其实对于caffe的实现一直有个疑问, 就是每一层貌似没有绑定一个激活函数? 看ufldl教程,感觉激活函数是必要存在的. 这怎么解释呢? 看到源码中,看到一些激活函数,比如sigmoid_layer.cpp和sigmoid_layer.cu. 也就是说,激活函数作为layer层面来实现了.当然,还有tanh_layer和relu_layer. 那,这个意思是

caffe源码分析--softmax_layer.cpp

caffe源码分析--softmax_layer.cpp 文件位置为caffe-master/src/caffe/layers/softmax_layer.cpp 这个是一个以前版本的程序,现在的代码有些不同了,不过可以参考 [cpp] view plaincopy // Copyright 2013 Yangqing Jia // #include <algorithm> #include <vector> #include "caffe/layer.hpp"

caffe源码学习之Proto数据格式【1】

前言: 由于业务需要,接触caffe已经有接近半年,一直忙着阅读各种论文,重现大大小小的模型. 期间也总结过一些caffe源码学习笔记,断断续续,这次打算系统的记录一下caffe源码学习笔记,巩固一下C++,同时也梳理一下自己之前的理解. 正文: 我们先不看caffe的框架结构,先介绍一下caffe.proto,是google开源的一种数据交互格式--Google Protobuf,这种数据的格式,我们可以看到caffe.proto中内容: syntax = "proto2"; pac

读caffe源码(未完待续)

caffe源码阅读杂记 准备 一些参考网页 Neural Networks and Deep Learning TUTORIAL ON DEEP LEARNING FOR VISION Deep Learning Tutorial 知乎-深度学习caffe的代码怎么读 Caffe源码解析 caffe源码结构 官方代码结构doxygen 官方Caffe Tutorial 以C++源码形式配置debug&CPU版的caffe,便于阅读源码与单步调试[参考] 参考官方的文档,先了解某个模块的作用 为了

Caffe源码-im2col操作

目录 im2col简介 im2col.cpp源码 小结 参考 @(Caffe源码-im2col操作) im2col简介 caffe的卷积操作中使用im2col来加速,im2col将卷积核中的每个点在图像上的对应点全都提取出来按行排列,得到一个矩阵,这样就将卷积操作转化为矩阵进行操作. 如上图所示的,假设输入图像的形状为channels=1, height=width=5,并且pad_w=pad_h=1, kernel_h=kernel_w=3, stride_h=stride_w=2, dila

OpenStack_Swift源码分析——Object-auditor源码分析(2)

1 Object-aduitor审计具体分析 上一篇文章中,讲解了Object-aduitor的启动,其中审计的具体执行是AuditorWorker实现的,在run_audit中实例化了AuditorWorker类,并调用audit_all_objects方法,下面看此方法的具体代码实现: def audit_all_objects(self, mode='once', device_dirs=None): #run_forever传过来的mode 为forever description =

OpenStack_Swift源码分析——Object-auditor源码分析(1)

1 Object-auditor 的启动 Object-auditor的启动和object-replicator的启动过程是一样的,首先是执行启动脚本 swift-init object-auditor start 启动脚本会运行swift源码bin目录下的swift-ojbect-auditor if __name__ == '__main__': parser = OptionParser("%prog CONFIG [options]") parser.add_option('-

nginx源码分析--从源码看nginx框架总结

nginx源码总结: 1)代码中没有特别绕特别别扭的编码实现,从变量的定义调用函数的实现封装,都非常恰当,比如从函数命名或者变量命名就可以看出来定义的大体意义,函数的基本功能,再好的架构实现在编码习惯差的人实现也会黯然失色,如果透彻理解代码的实现,领悟架构的设计初衷,觉得每块代码就想经过耐心雕琢一样,不仅仅实现了基本的功能给你,为其他人阅读也会提供很好的支持.细致恰当的命名规则就可以看出作者的功力. 2)更好更高的软件性能体现在架构设计上,好的架构会让软件更加稳定.容易维护.便于扩展.从核心模块

转 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)

深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇) 最近太忙了,一直没时间继续更新博客,今天忙里偷闲继续我的Mybatis学习之旅.在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程, 好啦,鄙人不喜欢口水话,还是直接上干活吧: 1. SqlSessionFactory 与 SqlSession. 通过前面的章节对于mybatis 的介绍及使用,大家都能体会到SqlSession的重要性了吧, 没错,从表面上来看,