上一篇咱们安装好了Windows下的caffe,并成功的对其进行了编译。这篇咱们主要来说解一下caffe代码的目录结构,了解了整个目录结构,有助于咱们的源码学习。python
工程目录下的文件夹的做用以下所示:网络
data/ 用于存放下载的训练数据 docs/ 帮助文档 examples/ 代码样例 matlab/ MATLAB接口文件 python/ PYTHON接口文件 models/ 一些配置好的模型参数 scripts/ 一些文档和数据会用到的脚本 tools/ 保存的是用于生成二进制处理程序,caffe在训练时实际是直接调用这些二进制文件 include/ Caffe的实现代码的头文件 src/ 实现Caffe的源文件
其中src/caffe/目录下的文件夹做用以下:数据结构
test/ 用gtest测试caffe的代码 util/ 数据转换时用的一些代码。caffe速度快,很大程度得益于内存设计上的优化(blob数据结构采用proto)和对卷积的优化(部分与im2col相关) proto/ 即所谓的“Protobuf”,全称“Google Protocol Buffer”,是一种数据存储格式,帮助caffe提速 layers/ 深度神经网络中的基本结构就是一层层互不相同的网络了,这个文件夹下的源文件以及目前位置“src/caffe”中包含全部.cpp文件就是caffe的核心目录下的核心代码了。
src/caffe/目录下的代码做用以下:学习
blob[.cpp .h] 基本的数据结构Blob类 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[.cpp .h] 层类Layer layers/ 此文件夹下面的代码所有至少继承了类Layer, 从layer_factory中注册继承