Caffe更新很快,以下内容可能与最新master有出入,不过如果参数名字没有更改应该没有变化。具体可以查看src/caffe/proto/caffe.proto文件内的定义。
1. Data输入层
name / type / top / bottom 是所有layer都有的参数域,DATA层与众不同的是包含data_param和transform_param两个域,并且通常包含会有data和label两个blob作为top。
1.1 DATA类型
对crop_size的解释:
1.2 MEMORY_DATA类型
1.3 HDF5_DATA类型
1.4 IMAGE_DATA类型
2. Convolution层
其中weight_filler与bias_filler包含如下参数:
3. RELU层
该层仅包含一项optional参数——relu_param下的negative_slope,当未指定该项时,为标准的RELU层;当指定时,对于x<0的输入,输出为negative_slope*x,而不是0。
4. Pooling层
Pooling层与conv层参数非常相近,去除了学习率和filler的参数。在setup环节,pooling与conv层也几乎一致。
5. LRN层
LRN层的目的是要对每一个点的邻域内进行归一化,包含如下参数项:
举例,LRN层的bottom的blob为10x6x25x25,local_size=3,norm_region=ACROSS_CHANNELS时,归一化邻域为3x1x1的空间;当norm_region=WITHIN_CHANNEL时,归一化邻域为1x3x3的空间。
归一化后的x=,n=邻域空间内的输入个数
注:LRN仅支持奇数的local_size参数。
6. Inner_product层
Inner_product层同样与conv层有着相近的参数项和结构,不做过多解释。
7. Dropout层
唯一的optional参数项dropout_param下的dropout_ratio,默认为0.5。含义将在迭代调整参数部分解释。
8. Accuracy层
唯一的optional参数项accuracy_param下的top_k,默认为1,指明测试为top_?的准确率。
9. Softmax_loss
softmax_loss层没有参数项,唯一值得注意的是,它封装了一个softmax层在其中,也就是说softmax_loss=softmax+loss regression。
10. Concat层
CONCAT层仅包含concat_param下的concat_dim一个参数项,且取值必须为0或1. 该层的意义是把两个层拼接成一个:假设有两个bottom输入,分别为N1 x K1 x W1 x H1 和 N2 x K2 x W2x H2, 则有如下关系:
当K1=K2 & H1=H2 & W1=W2时,可以令concat_dim =0,得到top为(N1+N2)xK1xH1xW1;
当N1=N2 & H1=H2 & W1=W2时,可以领concat_dim =1,得到top为N1x(K1+K2)xH1xW2.
当前仅支持在N和K维度上的合并。
11. 其他类型
比如激活函数层除了RELU还有SIGMOID / TANH / THRESHOLD类型,再比如Local-shared weight层。
am | ||