深度学习:tensorflow中激励函数的实现

激励函数是所有神经网络算法的必备神器, 激励函数的目的是为了调节权重和误差,对张量进行非线性操作,增强网络的表达能力。Tensorflow中的激励函数位于神经网络(neural network, nn)库。常用的激励函数有:

1、整流线性单元(Rectifier linear unit, Relu)

  函数为max(0, x),连续但不平滑,如下图所示:

    

  tensorflow中表达为:print(sess.run(tf.nn.relu([-3., 3., 10.])

  2、有时,为抵消Relu激励函数的线性增长部分,会在min()函数中嵌入max(0,x),其在Tensorflow中的实现称作Relu6,函数表示为min(max(0, x), 6)

  使用方式如下:print(sess.run(tf.nn.relu6([-3., 3., 10.]),图示为:

  

  3、sigmoid函数是最常用的连续、平滑的激励函数,也被称作逻辑函数,表示为1/(1 + exp(-x))。由于其在机器学习训练中反向传播趋近于0,因此不怎么使用。

  使用方式如下:print(sess.run(tf.nn.sigmoid([-1., 0., 1.]))

  

  4、双曲正切函数(hyper tangent, tanh)

  双曲正切函数为双曲正弦与双曲余弦的比值,另外一种写法是(exp(x) - exp(-x))  / (exp(x) + exp(-x))

  使用方式:print(sess.run(tf.nn.tanh([-1., 0., 1. ]))

  

  5、softsign函数,表达式为:x / (abs(x) + 1)

  使用方式:print(sess.run(tf.nn.softsign([-1., 0., 1.]))

  

  6、softplus激励函数是Relu激励函数的平滑版,表达式为:log(exp(x) + 1)

  使用方式如下:print(sess.run(tf.nn.softplus([-1., 0., 1. ]))

  

  7、ELU激励函数(Exponential Linear Unit, ELU),表达式为(exp(x) + 1) if x < 0 else x

  使用方法:print(sess.run(tf.nn.elu([-1., 0., -1.]))

  

原文地址:https://www.cnblogs.com/javaXRG/p/11772699.html