视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层。
这里介绍下conv层。
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
param {
lr_mult: 1 //学习率系数,最终的学习率为base_lr*lr_mult
}
param {
lr_mult: 2//偏置的学习率
}
convolution_param {
num_output: 20 //filter的个数
kernel_size: 5 //省略了pad,扩充边缘,可使卷积后的特征图与原图大小一样
stride:
weight_filler { //用xavier算来权值初始化
type: "xavier" //
}
bias_filler {
type: "constant"//为0
}
}
}
输入:n*c0*w0*h0
输出:n*c1*w1*h1
其中,c1就是参数中的num_output,生成的特征图个数
w1=(w0+2*pad-kernel_size)/stride+1;
h1=(h0+2*pad-kernel_size)/stride+1;
如果设置stride为1,前后两次卷积部分存在重叠。如果设置pad=(kernel_size-1)/2,则运算后,宽度和高度不变。
更多参考:http://www.cnblogs.com/denny402/p/5071126.html
介绍了Convolution,pooling,LRN层的参数。
需要格外注意的是im2col层,以前在matlab中用过,没明白是什么,博主给的图描述的很清晰了。
这张图也揭示了多个特征图、多个卷积核时是如何运算的,一目了然。