當前位置:
首頁 > 最新 > TensorFlow的使用之實現神經網路

TensorFlow的使用之實現神經網路

利用TensorFlow的playground網站可以直觀的查看一個神經網路的工作模式,樣本數據集通過學習速率訓練後,對結果逐步收斂,而後通過測試集以直觀的方式展現學習成果,本文講解神經網路的實現原理與演示;

演算法概述

實現一個神經網路演算法的步驟如下:

註:文章的代碼在Win10+VS Code+tesorflow 1.8中運行通過;

前向傳播演算法與代碼演示

神經網路通過輸入的特性向量經過層層推導到最後輸出,並通過輸出解決分類和回歸問題,那麼神經網路的輸出怎麼得到的呢?就是通過前向傳播演算法;

比如根據本文的截圖定義的神經網路,零件是否合格通過長度和質量決定,比如以[0.7,0.9]作為輸入,即長度定義為0.7,質量為0.9(來自樣本數據),那麼神經網路的第一層的第一個神經元我們定義為a1的值就為0.7w1+0.9w2,其中w1,w2為特徵向量連接到該神經元邊上的許可權值,一般通過tensorflow的隨機數得到,第2,3個神經元的值可以按此獲取,得到a1,a2,a3三個神經元的值後,再根據這三個神經元連接到輸出邊上的權重就可以得到輸出值,整個過程就是矩陣的乘法運算,如下:

OUTPUT = [0.7,0.9]*[[w1,w2,w3],[w11,w22,w33]]*[w1(2)+w2(2)+w3(2)]

以上過程就是矩陣的1*2矩陣乘上2*3矩陣乘上3*1矩陣,結果就是1*1的結果值,表示零件是否合格;

這個演算法編寫成tensorflow的代碼如下(代碼1):

模型訓練

在對模型訓練時,一般有一批已經定義好的樣本數據,即一批零件長度和質量告知零件是否合格的訓練樣本,而後可以根據監督學習的方式設置神經網路參數訓練數據集,使得已知的樣本集儘可能滿足答案,而後模型就可以提供預測未知數據的能力;

在神經網路優化演算法中,最常用的是反向傳播演算法,我們可將樣本數據通過如下步驟迭代學習:

反向傳播演算法是一個迭代過程,根據已知的如零件的[0.7.0.9]特徵向量可以得出他的輸出結果是:3.957578,但[0.7,0.9]如果是已知樣本數據,結果是已知的,反向傳播演算法通過優化更新變數,讓預測結果與真實答案儘可能接近。

將代碼1稍微改造下,讓其接收一組數據(N*2矩陣)得出輸出值(N*1矩陣),而後定義一個損失函數刻畫預測值與實際答案的差距,而後通過反向傳播演算法調整神經網路參數使得這個差距可以被縮小,以上步驟通過tensorflow編寫的python代碼如下:

從以上代碼運行結果可以看到,初始給出的神經網路的許可權w1和w2為:

通過反向傳播演算法優化迭代5000次後,交叉嫡越來越小,最終w1,w2的輸出矩陣為:

交叉嫡變小的過程為:

以上程序實現了訓練神經網路全過程,步驟如下:

定義神經網路結構和前向傳播輸出結果;

定義損失函數以及選擇反向傳播優化演算法;

生成灰化並在樣本數據上反覆運行反向傳播演算法優化權重;


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Sumslack團隊 的精彩文章:

大話lambda-每日一招

TAG:Sumslack團隊 |