1. 程式人生 > >TensorFlow筆記:啟用函式

TensorFlow筆記:啟用函式

tf.nn.sigmid()函式

函式表示式

f(x)=11+ex f(x) = \frac{1}{1 + e^{-x}}

函式影象

在這裡插入圖片描述

函式性質

對其求導可得到 f(x)=f(x)(1f(x))f'(x) = f(x)(1 - f(x)) sigmoid函式取值範圍在 (0, 1) 區間內,常用於輸出層進行二分類 sigmoid函式之前使用很廣泛,但因為sigmoid函式的特點,也存在一些缺點

  1. 在輸入點遠離零點時,其梯度就會變得很小,在反向傳播中容易出現梯度消散
  2. 函式的輸出得到的值永遠為正,均值非零,這在前向傳播中算是一種缺陷

tf.nn.tanh()函式

函式表示式

f(x)=exexex+ex=1e2x1+e2x f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} = \frac{1 - e^{-2x}}{1 + e^{-2x}}

函式影象

在這裡插入圖片描述

函式性質

對其求導可得到 f(x)=1(f(x))2f'(x) = 1 - (f(x))^{2} tanh又稱為雙曲正切函式,函式取值範圍在 (0, 1) 區間內,可以看做對sigmoid函式做了拉伸和平移,解決了sigmoid均值不為零的特點

tf.nn.relu()函式

函式表示式

f(x)=max(0,x) f(x) = max(0, x)

函式影象

在這裡插入圖片描述

函式性質

relu函式對輸入小於零的部分進行了修正,其梯度計算方便,並且在輸入為正時不會產生梯度消散 但是當輸入小於零時,對應的神經元輸出為零,及不被啟用的狀態,並且該節點的梯度也隨即變為零,造成神經元死掉( die ) 因此在使用relu作為啟用函式時,learning_rate 的設定很重要,通常不能太大

tf.nn.leaky_relu()函式

函式表示式

f(x)={αxx<0xx0 f(x) = \begin{cases} \alpha x & x < 0 \\ x & x \geq 0 \\ \end{cases}

函式影象

在這裡插入圖片描述

函式性質

leaky_relu是對relu函式小於零的部分進行了修正,為其提供了一個較小的導數 α 對於其中的 α 引數,通常是通過先驗知識人工賦予一個值。但是如果將其作為一個引數進行訓練,則得到了另一個啟用函式prelu,此處就不介紹了。