Caffe学习(3)——caffe中的视觉层及对应参数

本文介绍了Caffe中卷积神经网络的核心层——卷积层(Convolution)、池化层(Pooling)以及局部响应归一化层(LRN),详细阐述了各层的主要参数和功能,如num_output、kernel_size、stride和pad在卷积层的应用,以及Pooling层在减少计算量和数据维度的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Caffe的运行,首先要基于一个模型(model),比较常用的模型有Lenet、AlexNet、VGG等;一个模型有多个层构成,层有许多种类型,比如数据层(Data Layers)、视觉层(Vision Layers)、激活层(Activation Layers)等,每层对应着许多参数,这些参数都定义在caffe.proto这个配置文件中。

数据层及其参数的介绍在前一篇文章caffe中的数据层及对应参数进行讨论。


接下来,我们来讨论一下视觉层(Vision Layers)及其参数。


视觉层包括Convolution、Pooling、Local Response Normalization(LRN)等。下面进行详细介绍。

(1)Convolution(卷积层)

卷积层是卷积神经网络(CNN)的核心层。下面以示例作为说明:

layer {
  name:"conv1"//层名称
  type:"Convolution"//层类型
  bottom:"data"//输入数据
  top:"conv1"//输出数据
  param {//参数
    lr_mult:1//学习率系数,最终的学习率 = 该数 * solver.prototxt配置文件中的base_lr
  }
  param {
    lr_mult:2
  }			
  convolution_param {//在这里面设定卷积层的特有参数
    num_output:20//卷积核(filter)的个数
    kernel_size:5//卷积核的大小。如果卷积核的长和宽不相等,则需用kernel_h和kernel_w分别进行设定
    stride:1//卷积核的步长,一般默认为1.
    weight_filler {//权值初始化
      type:"xavier"
    }
    bias_filler {//偏置顶初始化
      type:"constant"
    }
  }
}

注:1)如果有两个lr_mult,则第一个表示权值学习率,第二个表示偏置顶的学习率;一般来说,偏置顶的学习率是权值学习率的两倍。

2)num_output和kernel_size这两个参数是必须设置的。


输入:n * c0 * w0 * h0

输出:n * c1 * w1 * h1

其中,c 1 就是参数中的num_output,生成的特征图个数

w 1 =(w 0 +2*pad­kernel_size)/stride+1;

 h 1 =(h 0 +2*pad­kernel_size)/stride+1;

如果设置stride为1,前后两次卷积部分存在重叠。如果设置pad=(kernel_size­1)/2,则运算后,宽度和高度不变。


2Pooling(池化层)

Pooling是为了减少运算量和数据维度而设置的一种层。下面以示例作为说明:

layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool:MAX//池化方法,默认为MAX,目前可用的方法有MAX、AVE或STOCHASTIC
    kernel_size:3//池化的核大小,也可以用kernel_h和kernel_w来设定
    stride:2//池化的步长,默认为1;一般我们设置为2,即不重叠
  }
}

Pooling层的运算方法基本和卷积层的一样。

输入:n * c * w0 * h0

输出:n * c * w1 * h1

和卷积层的区别就是其中的c保持不变,

w 1 =(w 0 +2*pad­-kernel_size)/stride+1;

 h 1 =(h 0 +2*pad-­kernel_size)/stride+1;

如果设置stride为2,前后两次卷积部分重叠。100*100的特征池化后,变成50*50


(3)Local Response Normalization(LRN)层

LRN层是对输入的局部区域进行归一化,达到“侧抑制”的效果。

layers{
    name: "norm1"
  type: LRN
  bottom: "pool1"
  top: "norm1"
  lrn_param {
    local_size:5//默认为5;如果是跨通道LRN,则表示求和的通道数,如果是在通道内LRN,则表示求和的正方形区域长度。
    alpha:0.0001//归一化公式中的参数
    beta:0.75//归一化公式中的参数
  }
}

补充:归一化公式:对于每一个输入,去除以,得到归一化后的输出。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值