caffe学习(6)激活层

激活(Activation)层又叫神经元(Neuron)层,最主要的是激活函数的设置。

Activation / Neuron Layers
Caffe源码解析6:Neuron_Layer,楼燚航的blog


一般来说,这一层是元素级的运算符,从底部blob作为输入并产生一个相同大小的顶部blob:

  • 输入:n * c * h * w
  • 输出:n * c * h * w

ReLU / Rectified-Linear and Leaky-ReLU

  • 层类型:ReLU
  • 参数(ReLUParameter relu_param):
    • 可选参数
      • negative_slope [default 0]: 用来指定负斜率部分的因子ν。完整的函数表达式为:y=max(0,x)+νmin(0,x)。反向传播的公式为
        Ex=νEyEyifx0ifx>0
  • 示例(./models/bvlc_reference_caffenet/train_val.prototxt):

    layer {
    name: "relu1"
    type: "ReLU"
    bottom: "conv1"
    top: "conv1"
    }

    支持in-place计算,bottom输入和top输出可以相同避免内存消耗。

Sigmoid

  • 层类型:Sigmoid
  • 示例( ./models/bvlc_reference_caffenet/train_val.prototxt):

    layer {
      name: "relu1"
      type: "ReLU"
      bottom: "conv1"
      top: "conv1"
    }

    激活函数表达式为y=(1+exp(x))1,由于收敛速度问题现在用的不多了。

TanH、AbsVal、BNLL

  • 层类型:TanH、AbsVal、BNLL
  • 示例:

    layer {
      name: "layer"
      bottom: "in"
      top: "out"
      type: "TanH"#"AbsVal"、“BNLL”官网上BNLL没有加双引号,应该是有误
    }

    分别是双曲正切函数、绝对值、binomial normal log likelihood(f(x)=log(1+ex))的简称。

Power

  • 层类型:Power
  • 参数 (PowerParameter power_param):
    • 可选
      • power [default 1]
      • scale [default 1]
      • shift [default 0]
  • 示例:

    layer {
      name: "layer"
      bottom: "in"
      top: "out"
      type: "Power"
      power_param {
            power: 2
            scale: 1
            shift: 0
      }
    }

    幂运算函数为f(x)=(shift+scalex)p


Caffe中的激活层还有很多,也有一些是加速的层。比如DropoutLayer现在是非常常用的一种网络层,只用在训练阶段,一般用在网络的全连接层中,可以减少网络的过拟合问题。
具体的使用再具体看./src/caffe/layers/下的文件吧。

阅读更多
版权声明:本文为博主原创文章,转载请标注出处。 https://blog.csdn.net/Yan_Joy/article/details/53064732
文章标签: caffe
个人分类: caffe
上一篇caffe学习(5)视觉层
下一篇caffe学习(7)损失层、通用层
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭