TensorFlow教程(六):激励函数

激励函数是神经网络算法的神器。激励函数的目的是为了调节权重的误差。在TensorFlow中,激励函数是作用在张量上的非线性操作。激励函数的使用方法和数学操作一样。激励函数的功能很多,但是主要是为了计算图归一化返回结果而引进的非线性部分。

TensorFlow的激励函数位于神经网络库(neural network,,nn)库。除了使用TensorFlow内联激励函数,我们也可以使用TensorFlow操作设计自定义激励函数。

 

1、整流线性单元(Rectifier linear unit,ReLU)是神经网络最常用的非线性函数。其对应数学公式为:

print(sess.run(tf.nn.relu([-3.0,3.0,10.0])))
#[0.0, 3.0, 10.0]

2、又是为了抵消ReLU激励函数的线性增长部分,会在min()函数中嵌入max(0,x),其在TensorFlow中的实现称为ReLU6,表示为min(max(0,x),6)。这是hard-sigmoid函数的变种,计算运行速度快,解决梯度消失(无限趋近于0)。其对应数学公式为:

print(sess.run(tf.nn.relu6([-3.0, 3.0, 10.0])))
#[0.0, 3.0, 6.0]

3、sigmoid函数是最常用的连续、平滑的激励函数。它也被称为逻辑函数(Logistic函数),表示为1/(1+exp(-x))。sigmoid函数由于在机器学习训练过程中反向传播项趋于0。其对应数学公式为:

print(sess.run(tf.nn.sigmoid([-1.0, 0.0, 1.0])))
#[0.26894143, 0.5, 0.7310586]

4、另外一种激励函数是双曲正切函数(hyper tangent,tanh)。双曲正切函数与sigmoid函数相似,但是有一种不同:双曲正切函数的取值范围为0到1;sigmoid函数取值范围为-1到1。双曲正切函数是双曲正弦与双曲余弦的比值,另外一种写法是(exp(x)-exp(-x))/(exp(x)+exp(-x))。其对应数学公式为:

print(sess.run(tf.nn.tanh([-1.0, 0.0, 1.0])))
#[-0.76159418, 0.0, 0.76159418]

5、softsign函数也是一种激励函数,表达式为:x/(abs(x)+1)。softsign函数是符号函数的连续估计。其对应数学公式为:

print(sess.run(tf.nn.softsign([-1.0, 0.0, -1.0])))
#[-0.5, 0.0, 0,5]

6、softplus激励函数是ReLU激励函数的平滑版,表达式为:log(exp(x)+1)。其对应数学公式为:

print(sess.run(tf.nn.softplus([-1.0, 0.0, -1.0])))
#[0.31326166, 0.69314718, 1.31326163]

7、ELU激励函数(Exponential Linear Unit,ELU)与softplus激励函数相似,不同点在于:当输入无限小时,ELU激励函数趋于接近于-1,而softplus激励函数趋近于0。表达式为if x<0 (exp(x)+1) else x

print(sess.run(tf.nn.elu([-1.0, 0.0, -1.0])))
#[-0.63212055, 0.0, 1.0]

TensorFlow教程(六):激励函数_第1张图片

TensorFlow教程(六):激励函数_第2张图片

 

你可能感兴趣的:(TensorFlow)