【AI實戰】快速掌握TensorFlow(三):激勵函式
到現在我們已經瞭解了TensorFlow的特點和基本操作(見文章:快速掌握TensorFlow(一)),以及TensorFlow計算圖、會話的操作(見文章:快速掌握TensorFlow(二)),接下來我們將繼續學習掌握TensorFlow。
本文主要是學習掌握TensorFlow的激勵函式。
1、什麼是激勵函式
激勵函式是所有神經網路演算法的必備神器,通過加入激勵函式可實現張量計算的非線性化,從而提升神經網路模型的泛化能力。
直接構建神經網路的輸入與輸出是一個線性關係,如下圖
通過在神經網路中加入非線性激勵函式後,神經網路具有非線性處理的能力,能夠實現對非線性資料的處理,如下圖
通俗地講,激勵函式的作用就是將多個線性輸入轉換為非線性的關係。如果不使用激勵函式,神經網路的每層都只是做線性變換,即使是多層輸入疊加後也還是線性變換。通過使用激勵函式引入非線性因素後,使神經網路的表示能力更強了。
常用的激勵函式主要有:ReLU、ReLU6、sigmoid、tanh、softsign、ELU等。
如果想要更加詳細地瞭解激勵函式,請見文章:深度學習中常用的激勵函式
2、怎樣使用激勵函式
在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.]
(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的精彩內容,敬請期待。
推薦相關閱讀
- 【AI實戰】快速掌握TensorFlow(一):基本操作
- 【AI實戰】快速掌握TensorFlow(二):計算圖、會話
- 【AI實戰】快速掌握TensorFlow(三):激勵函式
- 【AI實戰】快速掌握TensorFlow(四):損失函式
- 【AI實戰】搭建基礎環境
- 【AI實戰】訓練第一個模型
- 【AI實戰】編寫人臉識別程式
- 【AI實戰】動手訓練目標檢測模型(SSD篇)
- 【AI實戰】動手訓練目標檢測模型(YOLO篇)
- 【精華整理】CNN進化史
- 大話卷積神經網路(CNN)
- 大話迴圈神經網路(RNN)
- 大話深度殘差網路(DRN)
- 大話深度信念網路(DBN)
- 大話CNN經典模型:LeNet
- 大話CNN經典模型:AlexNet
- 大話CNN經典模型:VGGNet
- 大話CNN經典模型:GoogLeNet
- 大話目標檢測經典模型:RCNN、Fast RCNN、Faster RCNN
- 大話目標檢測經典模型:Mask R-CNN
- 27種深度學習經典模型
- 淺說“遷移學習”
- 什麼是“強化學習”
- AlphaGo演算法原理淺析
- 大資料究竟有多少個V
- Apache Hadoop 2.8 完全分散式叢集搭建超詳細教程
- Apache Hive 2.1.1 安裝配置超詳細教程
- Apache HBase 1.2.6 完全分散式叢集搭建超詳細教程
- 離線安裝Cloudera Manager 5和CDH5(最新版5.13.0)超詳細教程