http://yufeigan.github.io/2014/12/09/Caffe%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B02-Caffe%E7%9A%84%E4%B8%89%E7%BA%A7%E7%BB%93%E6%9E%84-Blobs-Layers-Nets/
http://blog.csdn.net/buyi_shizi/article/details/51499869
Net在caffe中代表一个完整的CNN模型,由一系列的Layer组成(无回路有向图DAG),Layer之间的连接由一个文本文件*.prototxt描述.
Net中同时包含Layer对象和Blob对象.
Blob对象用于存放每个Layer输入输出的中间结果, Layer则根据Net描述对指定输入blob进行处理(所有的卷积,下采样,全连接,非线性变换,计算代价函数等操作都在这里实现),输出结果放到指定输出blob中.
输入blob和输出blob对象可能为同一个,所有的Layer对象和Blob对象都用名字区分, 同类间同名的即为同一个.
caffe:Net这个数据结构里包含了很多重要的变量:
vector< shared_ptr< Layer< Dtype > > > //layers_变量存储的是每层layer结构体的指针。
vector< shared_ptr< Blob< Dtype > > > //blobs_变量存放的是网络中层与层之间传递的数据,即每层的输入和输出。从这我们可以看出,每层的输入输出并不是存储在对应的层的结构体中的,而是统一存储