caffe文件夹下的文件目录结构如下图:
最重要的三个文件夹就是:
include:caffe的实现代码的头文件
tools:保存的源码是用于生成二进制处理程序的,caffe在训练时实际是直接调用这些二进制文件。
src:实现Caffe的源文件
读源码也就是主要读这三个文件夹,src文件的结构如下:

在caffe教程中,介绍了caffe的三级结构(http://caffe.berkeleyvision.org/tutorial/net_layer_blob.html ):Blobs, Layers,Nets.如下图所示:(更多内容可以看caffe的官网:http://caffe.berkeleyvision.org/tutorial/)
.
├── build -> .build_release //编译结果存放处,.build_release不是一个目录找不到
├── cmake //cmake编译用
│ ├── External
│ ├── Modules
│ └── Templates
├── data //存放原始数据以及数据获取脚本
│ ├── cifar10 //存放cifar10小图片原始数据
│ ├── ilsvrc12 //存放ImageNet Meta数据,原始数据要另外下载
│ ├── mnist //存放MNIST手写数字图像数据
│ └── myself //存放我的数据,自己建立的
├── distribute //编译后生成发布包的位置,用于迁移
│ ├── bin
│ └── lib
├── docker //用于迁移的工具
│ ├── standalone
│ │ ├── cpu
│ │ └── gpu
│ └── templates
├── docs //doxygen工程文件放这里,可生成Caffe ref_man.pdf
│ ├── images
│ ├── _layouts
│ ├── stylesheets
│ └── tutorial
│ └── fig
├── examples //存放Caffe简单例程
│ ├── cifar10 //存放cifar10例程
│ ├── cpp_classification //图像分类例程
│ ├── feature_extraction //特征提取例程
│ ├── finetune_flickr_style //finetune例程
│ ├── finetune_pascal_detection //finetune例程
│ ├── hdf5_classification //使用HDF5的分类例程
│ ├── imagenet //Imagenet例程,使用bvlc_reference_caffenet
│ ├── images
│ ├── mnist //mnist手写字符识别例程
│ │ ├── mnist_test_lmdb
│ │ └── mnist_train_lmdb
│ ├── myself
│ │ ├── ilsvrc12_train_lmdb
│ │ └── ilsvrc12_val_lmdb
│ ├── net_surgery
│ ├── pycaffe
│ │ └── layers
│ ├── siamese
│ ├── _temp
│ │ └── features
│ └── web_demo //一个Web Server +分类例程
│ └── templates
├── include //Caffe头文件集中存放目录
│ └── caffe
│ ├── layers
│ ├── test
│ └── util
├── matlab //Matlab做Wrapper,具体参考RCNN源码
│ ├── +caffe
│ │ ├── imagenet
│ │ ├── private
│ │ └── +test
│ ├── demo
│ └── hdf5creation
├── models //存放示例模型
│ ├── bvlc_alexnet //Alexnet模型
│ ├── bvlc_googlenet //GoogleNet
│ ├── bvlc_reference_caffenet //caffe模拟的Alexnet模型
│ ├── bvlc_reference_rcnn_ilsvrc13 //Rcnn模型
│ └── finetune_flickr_style
├── python //用于Python wrapper
│ └── caffe
│ ├── imagenet
│ ├── proto
│ └── test
├── scripts //一些文档和数据用到的脚本
│ └── travis
├── src //caffe源码
│ ├── caffe
│ │ ├── layers //各个层具体实现
│ │ ├── proto //即所谓的“Protobuf”,帮助caffe提速描述文集,学习数据结果先从这里开始
│ │ ├── solvers //优化方法类Solver
│ │ ├── test
│ │ │ └── test_data
│ │ └── util //数据转换时用的一些代码。caffe速度快,很大程度得益于内存设计上的优化(blob数据结构采用proto)
// 和对卷积的优化(部分与im2col相关)及cudnn加速
│ └── gtest
└── tools //常用学习源码
└── extra