1. 前言
在caffe结构解析一节中介绍了caffe中重要的四个模块:Net,Layers,Blobs和Solver。然而对Layer和Solver两个模块只是简单介绍了其结构,其中一些重要的参数没给出解释,最近复习了Andrew NG和Li feifei的深度学习教程后,大概理解了这些参数的含义,下面给出具体介绍。
2. Layer参数详解
在caffe结构解析一节中介绍了Layer可以分为四部分:
- 名字;
- 类型;
- 连接结构,包括输入和输出的blob;
- 参数。
对于前三部分通过读.prototxt文件可以直观理解,而参数部分,则涉及深度学习中的许多知识,包括数据预处理,参数初始化,卷积核和学习率等。
2.1. 数据预处理
Lenet的data层如下所示:
layer {
name: "mnist"
type: "Data"
data_param {
source: "mnist_train_lmdb"
backend: LMDB
batch_size: 64
scale: 0.00390625
}
top: "data"
top: "label"
}
data_param中四个参数的含义是:
- source项是存放LMDB数据的位置;
- backend指出数据的后缀是LMDB,而不是jpg或者其它;
- batch_size指SGD中一批数据的大小是64;
- scale的大小是0.00390625,其等于1/256,意思是将原始图像数据(大小范围为[0,255])归一化到[0,1)范围内。
2.2. 学习率
第一个卷积层如下所示:
layer {
name: "conv1"
type: "Convolution"
param { lr_mult: 1 }
param { lr_mult: 2 }
convolution_param {
num_output: 20
kernel_size: 5
stride: