1.激活函数的要求
评价激活函数是否有用的主要因素:
(1)该函数应是单调的。这样输出便会随着输入的增长而增长,从而利用梯度下降法寻找局部极值点成为可能。
(2)该函数是可微分的。以保证该函数定义域内的任意一点上的导数均存在,从而使得梯度下降法能够正常使用来自这类激活函数的输出。
-*-任何满足这些条件的函数都可以用作激活函数。
2.常用激活函数
(1)tf.nn.relu
线性修正单元,也叫斜坡函数。
特点:ReLU是分段线性的,当输入为非负时,输出将与输入相同;当输入为负时,输出均为0.
优点:不受“梯度消失”的影响,且取值范围在[0,正无穷]。
缺点:当使用较大学习速率时,易受到饱和的神经元的影响。
(2)tf.sigmod
特点:sigmod函数的返回值范围在[0.0, 1.0]中。
当输入值较大时,tf.sigmod将返回一个接近于1.0的值,而当输入值较小时,返回值将接近于0.0。
优点:当样本真实输出位于[0.0, 1.0]
缺点:当输入接近饱和或变化剧烈时,对输出范围的这种缩减会带来不利影响。
(3)tf.tanh
双曲正切函数
特点:双曲正切函数(tanh)与tf.sigmod非常接近,且具有后者类似的优缺点,主要区别在于tanh的值域为[-1.0, 1.0]
(4)tf.nn.dropout
特点:依据某个可配置的概率将输出设为0.0。
3.tensorflow中的激活函数
激活操作提供用于神经网络的不同类型的非线性。这些包括平滑的非线性(sigmoid,tanh,elu,selu, softplus,和softsign),连续的,但不是到处可微函数(relu,relu6,crelu和relu_x),和随机正规化(dropout)。
所有激活操作都按分量应用,并产生与输入张量相同形状的张量。
Neural Network
Activation Functions
<1> tf.nn.relu(features, name=None)
<2> tf.nn.relu6(features, name=None)
<3> tf.nn.softplus(features, name=None)
<4> tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None)
<5> tf.nn.bias_add(value, bias, name=None)
<6> tf.sigmoid(x, name=None)
<7> tf.tanh(x, name=None)