到如今咱們已經瞭解了TensorFlow的特色和基本操做(見文章:快速掌握TensorFlow(一)),以及TensorFlow計算圖、會話的操做(見文章:快速掌握TensorFlow(二)),接下來咱們將繼續學習掌握TensorFlow。python
本文主要是學習掌握TensorFlow的激勵函數。算法
一、什麼是激勵函數
激勵函數是全部神經網絡算法的必備神器,經過加入激勵函數可實現張量計算的非線性化,從而提高神經網絡模型的泛化能力。
直接構建神經網絡的輸入與輸出是一個線性關係,以下圖
經過在神經網絡中加入非線性激勵函數後,神經網絡具備非線性處理的能力,可以實現對非線性數據的處理,以下圖
通俗地講,激勵函數的做用就是將多個線性輸入轉換爲非線性的關係。若是不使用激勵函數,神經網絡的每層都只是作線性變換,即便是多層輸入疊加後也仍是線性變換。經過使用激勵函數引入非線性因素後,使神經網絡的表示能力更強了。微信
經常使用的激勵函數主要有:ReLU、ReLU六、sigmoid、tanh、softsign、ELU等。
若是想要更加詳細地瞭解激勵函數,請見文章:深度學習中經常使用的激勵函數網絡
二、怎樣使用激勵函數
在TensorFlow中使用激勵函數很是方便,激勵函數位於神經網絡庫中(tensorflow.nn),下面介紹使用方法。
(0)建立一個會話,調用默認計算圖分佈式
import tensorflow as tf sess = tf.Session()
(1)ReLU函數
ReLU(Rectifier linear unit,整流線性單元)是神經網絡中最經常使用的激勵函數,函數以下:
在TensorFlow中的調用方法以下:函數
df=tf.nn.relu([-5., 0., 5., 10.]) print(sess.run(df))
輸出結果爲:
[0. 0. 5. 10.]oop
(2)ReLU6函數
引入ReLU6主要是爲了抵消ReLU函數的線性增加部分,在ReLU的基礎上再加上min,函數以下:
在TensorFlow中的調用方法以下:學習
df=tf.nn.relu6([-5., 0., 5., 10.]) print(sess.run(df))
輸出結果爲:
[0. 0. 5. 6.]大數據
(3)Leaky ReLU函數
引入Leaky ReLU主要是爲了不梯度消失,當神經元處於非激活狀態時,容許一個非0的梯度存在,這樣不會出現梯度消失,收斂速度快。函數以下:
在TensorFlow中的調用方法以下:人工智能
df=tf.nn.leaky_relu([-3., 0., 5.]) print(sess.run(df))
輸出結果爲:
[-0.3 0. 5.]
(4)sigmoid函數
sigmoid函數是神經網絡中最經常使用的激勵函數,它也被稱爲邏輯函數,它在深度學習的訓練過程當中會致使梯度消失,所以在深度學習中不怎麼使用。函數以下:
在TensorFlow中的調用方法以下:
df=tf.nn.sigmoid([-1., 0., 1.]) print(sess.run(df))
輸出結果爲:
[0.26894143 0.5 0.7310586]
(5)tanh函數
tanh函數便是雙曲正切函數,tanh與sigmoid函數類似,但tanh的取值範圍是0到1,sigmoid函數取值範圍是-1到1。函數以下:
在TensorFlow中的調用方法以下:
df=tf.nn.tanh([-1., 0., 1.]) print(sess.run(df))
輸出結果爲:
[-0.76159418 0. 0.76159418]
(6)ELU函數
ELU在正值區間的值爲x自己,而在負值區間,ELU在輸入取較小值時具備軟飽和的特性,提高了對噪聲的魯棒性,函數以下:
在TensorFlow中的調用方法以下:
df=tf.nn.elu([-1., 0., 1.]) print(sess.run(df))
輸出結果爲:
[-0.63212055 0. 1.]
(7)softsign函數
softsign函數是符號函數的連續估計,定義以下:
在TensorFlow中的調用方法以下:
df=tf.nn.softsign([-1., 0., 1.]) print(sess.run(df))
輸出結果爲:
[-0.5 0. 0.5]
(8)softplus函數
softplus是ReLU激勵函數的平滑版,定義以下:
在TensorFlow中的調用方法以下:
df=tf.nn.softplus([-1., 0., 1.]) print(sess.run(df))
輸出結果爲:
[0.31326166 0.69314718 1.31326163]
至此,咱們已經瞭解了激勵函數的做用,以及經常使用的激勵函數原理和在TensorFlow中調用的方法。
接下來的「快速掌握TensorFlow」系列文章,還會有更多講解TensorFlow的精彩內容,敬請期待。
歡迎關注本人的微信公衆號「大數據與人工智能Lab」(BigdataAILab),獲取更多信息
推薦相關閱讀