Caffe源码精读 -1 -Caffe总览
1. 概述
Caffe源码架构比较明晰,分为solver,net, layer,Blobs四个层级(严格的说是三个层级,不包含solver)。
solver是结算文件,生成网络,并控制整个网络的前向计算和反向传播;
net是网络文件,一个net对象就是一个网络模型。net由一个个layer组成;
layer是神经网络的各个层的抽象,其中包含Forward_cpu(Forward_gpu)和Backward_cpu(Backward_gpu),还有输入输出blob和偏差blob。
Blob是数据类,用来存储数据。
2. 训练流程
训练实际上包含三个阶段,涉及caffe.cpp, solver.cpp和net.cpp(再接下去就是各个layer了)。
caffe.cpp中的train是用来训练的入口。主要的任务就是创建一个solver,然后执行solver的Solve(单GPU)。
solver会根据导入的solver.prototxt文件,创建网络。具体的就是在solver.cpp有函数InitTrainNet,会执行net_.reset操作,会根据传入的NetParameter构建网络。
Net在Init函数中,会创建网络、输入blob、输出blob等。实际上是实例化了各层对象,并相应的匹配了输入输出。
To be continue...