相信社区中很多小伙伴和我一样使用了很长时间的Caffe深度学习框架,也非常希望从代码层次理解Caffe的实现从而实现新功能的定制。
本文将从整体架构和底层实现的视角,对Caffe源码进行解析。
Caffe框架主要有五个组件,Blob,Solver,Net,Layer,Proto,其结构图如下图1所示。
Solver负责深度网络的训练,每个Solver中包含一个训练网络对象和一个测试网络对象。
每个网络则由若干个Layer构成。
每个Layer的输入和输出Featuremap表示为InputBlob和OutputBlob。
Blob是Caffe实际存储数据的结构,是一个不定维的矩阵,在Caffe中一般用来表
1