一个完整的深度学习系统最核心的两个方面是 数据和模型。 这里主要来关注模型。一个深度学习模型通常由三部分参数组成:
可学习参数(Learnable Parameter),又称可训练参数、神经网络权系数、权重,其数值由模型初始化参数、误差反向传播过程控制,一般不可人工干预。
结构参数(Archetecture Parameter),包括卷积层/全连接层/下采样层数目、卷积核数目、卷积核大小等描述网络结构的参数,一旦设定好,在网络训练阶段不能更改:指的注意的是,训练阶段网络结构参数和预测阶段阶段参数很可能不同。
训练超参数(Hyper-Parameter),用来控制网络训练收敛的参数,训练阶段可以自动或者手动调节以获得更好的效果,预测阶段不需要该参数。
在caffe中,一个模型的三部分参数分别由不同模块定义和实现:
可学习参数在内存中使用Blob对象保持,必要时以二进制ProtoBuffer文件(*.caffemodel)形态序列化并存储于磁盘上,便于进一步微调(finetune,又称精调)、共享、行呢个评估;而.solverstate是与.caffemodel一起产生的二进制文件,包含从上次停止点回复训练模型所需的信息。
结构参数使用ProtoBuffer文本格式(*.prototxt)描述,网络初始化时通过该描述文件构建Net对象、Layer对象形成有向无环图结构,在Layer与Layer之间、Net输入源和输出源均为持有数据和中间结果的Blob对象。
训练超参数同样使用ProtoBuffer文本格式(*.prototxt)描述,训练阶段利用该描述文件构建求解器(Solver)对象,该对象按照一定规则在训练网络时自动调节这些超参数值。