首页 > 程序开发 > 综合编程 > 其他综合 >

Caffe源码(十)Caffe五种层的实现和参数配置

2017-04-22

Caffe源码(十)Caffe五种层的实现和参数配置:卷积层输入为28*28的图像,经过5*5的卷积之后,得到一个(28-5+1)*(28-5+1) = 24*24的map。

Caffe源码(十)Caffe五种层的实现和参数配置:卷积层输入为28*28的图像,经过5*5的卷积之后,得到一个(28-5+1)*(28-5+1) = 24*24的map。

map:就是一张图像经过一个卷积核之后的图像

layer {
  name: "conv2"
  type: "Convolution"
  bottom: "pool1"
  top: "conv2"
  param {
    lr_mult: 1             #学习率1,和权值更新相关
  }
  param {
    lr_mult: 2             #学习率2,和权值更新相关
  }
  convolution_param {
    num_output: 50   # 50个输出的map
    kernel_size: 5      #卷积核大小为5*5
    stride: 1               #卷积步长为1
    weight_filler {       #权值初始化方式
      type: “xavier"     #默认为"constant",值全为0,很多时候我们也可以用"xavier"或者”gaussian"来进行初始化
    }
    bias_filler {          #偏置值的初始化方式
      type: "constant"     #该参数的值和weight_filler类似,一般设置为"constant",值全为0
    }
  }

池化层

这里写图片描述
例子:
输入为卷积层1的输出,大小为24*24,对每个不重叠的2*2的区域进行降采样。对于max-pooling,选出每个区域中的最大值作为输出。而对于mean-pooling,需计算每个区域的平均值作为输出。最终,该层输出一个(24/2)*(24/2)的map

layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX #Pool为池化方式,默认值为MAX,可以选择的参数有MAX、AVE、STOCHASTIC
    kernel_size: 2  #池化区域的大小,也可以用kernel_h和kernel_w分别设置长和宽
    stride: 2 #步长,即每次池化区域左右或上下移动的距离,一般和kernel_size相同,即为不重叠池化。也可以也可以小于kernel_size,即为重叠池化,Alexnet中就用到了重叠池化的方法
  }
}

全连接层

这里写图片描述
50*4*4=800个输入结点和500个输出结点

#参数和卷积层表达一样
layer {
  name: "ip1"
  type: "InnerProduct"
  bottom: "pool2"
  top: "ip1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  inner_product_param {
    num_output: 500
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
相关文章
最新文章
热点推荐