1. 程式人生 > >Tensorflow深度學習之五:啟用函式

Tensorflow深度學習之五:啟用函式

啟用函式的作用

在神經網路中,啟用函式的作用是能夠給神經網路加入一些非線性因素,使得神經網路可以更好地解決較為複雜的問題。
我們嘗試引入非線性的因素,對樣本進行分類。

在神經網路中也類似,我們需要引入一些非線性的因素,來更好地解決複雜的問題。而啟用函式恰好就是那個能夠幫助我們引入非線性因素的存在,使得我們的神經網路能夠更好地解決較為複雜的問題。

常見的啟用函式有Sigmoid,Relu,tanh等。
關於上述函式的公式,在此不贅述。

Sigmoid函式如下:
這裡寫圖片描述

tanh函式如下:
這裡寫圖片描述

Relu函式如下:
這裡寫圖片描述

在Tensorflow中使用啟用函式
以Relu函式為例:

import tensorflow as tf

# 預設Tensorflow會話
sess = tf.InteractiveSession() # Relu函式處理負數 print("anwser 1:",tf.nn.relu(-2.9).eval()) # Relu函式處理正數 print("anwser 2:",tf.nn.relu(3.4).eval()) # 產生一個4x4的矩陣,滿足均值為0,標準差為1的正態分佈 a = tf.Variable(tf.random_normal([4,4],mean=0.0, stddev=1.0)) # 對所有變數進行初始化,這裡對a進行初始化 tf.global_variables_initializer().run() # 輸出原始的a的值
print("原始矩陣:\n",a.eval()) # 對a使用Relu函式進行啟用處理,將結果儲存到b中 b = tf.nn.relu(a) # 輸出處理後的a,即b的值 print("Relu函式啟用後的矩陣:\n",b.eval())

結果如下:(由於不同的機器,執行結果會有不同)

anwser 1: 0.0
anwser 2: 3.4
原始矩陣:
 [[-0.42271236  0.70626765  0.4220579  -1.19738662]
 [-0.09090481  1.20085275 -1.37331688 -0.28922254]
 [-0.63343877  0.04532439 -0.98322827 -0.01032094]
 [ 0.364104    1.00423157  0.23247592 -1.13028443]]
Relu函式啟用後的矩陣: [[ 0. 0.70626765 0.4220579 0. ] [ 0. 1.20085275 0. 0. ] [ 0. 0.04532439 0. 0. ] [ 0.364104 1.00423157 0.23247592 0. ]]

可以發現,對於輸入是一個數字來說,輸出滿足公式。對於輸入引數是一個矩陣的情況,relu函式對矩陣中的每一個數字均使用了Relu函式進行處理,負數直接變為0.0,正數保持不變。

其他的啟用函式亦是如此。