本文是作者原创,如有理解错误,恳请大家指出,如需引用,请注明出处。
Caffe FeatureMap数据流的建立
用语解释
- FeatureMap: 输入的图片信息或者经过多层处理后的图片信息。
- weights: 只针对卷积层存在的权重系数。
- caffe :文中提到的caffe均指caffed1.0,如果使用caffe2.0会特别指出。
在讲解FeatureMap的数据流之前,首先需要明确一下caffe的大体结构,caffe的整体逻辑结构分为3层,分别是Net,Layer和Blob,分别的作用如下:
* Net: 该层处于CAFFE的最顶层,主要负责对模型文件的读写,根据模型文件的内容建立相应的Layer,填充对应层的数据并进行相关的调用。
* Layer: 该层是实际的执行单元,常见的如卷积层,Pooling层都是处于这一逻辑层。
* Blob:该层是一个内存管理的模块,为Layer和Net提供相应的存储空间,屏蔽上层对于内存分配,CPU,GPU切换的感知。
由上面的讲解分层关系不难看出,FeatureMap在整个Caffe框架中,不属于任何一个Layer,所以它被最顶层的Net层所持有。Net层就需要能够通过caffe的模型文件推倒出每一层所依赖的输入,这样才能构建出一个完整的数据链。在这种需求下Caffe引入了两个定义:
* bottom: Layer的输入数据。
* top: Layer的输出数据。
具体的形式如下图(单输入和多输入的情形):