1.激活函数作用:激活函数是用来引入非线性因素的。
2.激活函数一般具有以下性质:
(1)非线性
(2)处处可导:反向传播时需要计算激活函数的偏导数,所以要求激活函数除个别点外,处处可导。
(3)单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。
2.激活函数一般具有以下性质:
(1)非线性
(2)处处可导:反向传播时需要计算激活函数的偏导数,所以要求激活函数除个别点外,处处可导。
(3)单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。
(4)输出值的范围: 当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate.
3.激活层的结构
layer {
name: "relu1" //该层名称
type: "ReLU" //激活函数类型
bottom: "conv1" //该层输入数据blob
top: "conv1" //该层输出数据blob
}
参数解释:
Type为该层类型,可取值分别为:
(1)ReLU:表示我们使用relu激活函数,relu层支持in-place计算,这意味着该层的输入和输出共享一块内存,以避免内存的消耗。
(2)Sigmoid:代表使用sigmoid函数;
(3) TanH:代表使用tanh函数;
(4) AbsVal:计算每个输入的绝对值f(x)=Abs(x)
(5)power对每个输入数据进行幂运算
f(x)= (shift + scale * x) ^ power
层类型:Power
可选参数:
power: 默认为1
scale: 默认为1
shift: 默认为0
layer {
name: "layer"
bottom: "in"
top: "out"
type: "Power"
power_param {
power: 2
scale: 1
shift: 0
}
}
一般比较常见的激活函数有sigmoid、tanh和Relu,其中Relu由于效果最好,现在使用的比较广泛。