在caffe中,网络的结构由prototxt文件中给出,由一些列的Layer(层)组成,常用的层如:数据加载层、卷积操作层、pooling层、非线性变换层、内积运算层、归一化层、损失计算层等;本篇主要介绍激活函数层

 

1. 激活函数层总述

下面首先给出激活函数层的结构设置的一个小例子(定义在.prototxt文件中) 

layer {
  name: "relu1"  //该层名称
  type: "ReLU"   //激活函数类型
  bottom: "conv1" //该层输入数据blob
  top: "conv1"  //该层输出数据blob
}
注意:activation是一种element-wise的操作,所以,可以做in-place来节约内存,通过给bottom blob和top blon相同的名字来实验

2. 可选激活函数类型

  • type:"Sigmoid":f(x)=1/(1+e(-x))

  • type:"ReLu":f(x)=max(x,0)

  • type:"AbsVal":f(x)=abs(x)

  • type:"TanH":f(x)=[e(x)-e(-x)]/[e(x)+e(-x)]

  • type:"BNLL":f(x)= (shift + scale * x) ^ power

  • type:"Power":f(x)=log(1 + exp(x))

 参考:caffe tutorial