caffe中数据结构主要包括caffe::Net,caffe::Layer,caffe::Solver三个主要大类。下面就这三个主要的数据结构做一下总结。
1,caffe:Net:这个数据结构用来表示整个网络,这个数据结构里包含了很多重要的变量。
- vector< shared_ptr< Layer< Dtype > > > layers_变量存储的是每层layer结构体的指针。
- vector< shared_ptr< Blob< Dtype > > > blobs_变量存放的是网络中层与层之间传递的数据,即每层的输入和输出。从这我们可以看出,每层的输入输出并不是存储在对应的层的结构体中的,而是统一存储在Net中。
- vector< vector< Blob< Dtype > * > > bottom_vecs_变量存储的是每一层的输入的内存首地址,注意这只是存放的指针,真正的数据还是存放在blobs_中。
- vector< vector< Blob< Dtype > * > > top_vecs_变量存储的是每一层的输出的内存的首地址,注意这也只是存放指针,真正的数据也是在blobs_中。