Caffe layer type: "Convolution" ; type: "ReLU"

对卷积层各项参数的解读,见如下代码的注释:

layer {
  name: "conv1"
  type: "Convolution"
  bottom: "img0_aug"
  bottom: "img1_aug"
  top: "conv1a"
  top: "conv1b"
  param {
    lr_mult: 1 # 学习率的系数,最终的学习率是这个数乘以solver.prototxt配置文件中的base_lr。
    decay_mult: 1 # 衰减的系数
  }
  param {
    lr_mult: 1 # 如果有两个lr_mult, 则第一个表示权值的学习率,第二个表示偏置项的学习率。一般偏置项的学习率是权值学习率的两倍。
    decay_mult: 0
  }
  convolution_param {
    num_output: 24 # 卷积核(filter)的个数,即生成特征图的个数
    pad: 3 # 四个边缘都扩充3个像素,这样对于卷积核为7的卷积运算后,如果stride为1, 则特征图不会变小
    kernel_size: 7 # 卷积核的大小。如果卷积核的长和宽不等,需要用kernel_h和kernel_w分别设定
    stride: 2 # 卷积核的步长,默认为1。也可以用stride_h和stride_w来设置。
    weight_filler { # 权重初始化,默认为“constant",值全为0,很多时候我们用"xavier"算法来进行初始化,也可以设置为”gaussian"
      type: "msra"
    }
    bias_filler { # 偏置项的初始化。一般设置为"constant",值全为0
      type: "constant"
    }
	# bias_term: 是否开启偏置项,默认为true, 开启
	# group: 分组,默认为1组。如果大于1,我们限制卷积的连接操作在一个子集内。
	# 如果我们根据图像的通道来分组,那么第i个输出分组只能与第i个输入分组进行连接。
	# w1=(w0+2*pad-kernel_size)/stride+1;
    engine: CUDNN
  }
}

“ReLU”是一种常见的激活层,在caffe 的layer中,它的参数negative_slope,  默认为0. 如果设置了这个值,那么数据为负数时,就不再设置为0,而是用原始数据乘以negative_slope

layer {
  name: "ReLU1"
  type: "ReLU"
  bottom: "conv1a"
  top: "conv1a"
  relu_param {
    negative_slope: 0.1 # 默认为0. 如果设置了这个值,那么数据为负数时,就不再设置为0,而是用原始数据乘以negative_slope
    engine: CUDNN
  }
}

猜你喜欢

转载自blog.csdn.net/wendygelin/article/details/88405871
今日推荐