摘要: 神經網絡是一種數學模型,是存在於計算機的神經系統,由大量的神經元相連接並進行計算,在外界信息的基礎上,改變內部的結構,常用來對輸入和輸出間複雜的關係進行建模。......
這個圖就是一個神經網絡系統,它由很多層構成。輸入層就是負責接收信息,比如說一隻貓的圖片。輸出層就是計算機對這個輸入信息的認知,它是不是貓。隱藏層就是對輸入信息的加工處理。
1. 關於非結構化的數據
神經網絡是如何被訓練的,首先它需要很多數據。比如他要判斷一張圖片是不是貓。就要輸入上千萬張的帶有標籤的貓貓狗狗的圖片,然後再訓練上千萬次。
神經網絡訓練的結果有對的也有錯的,如果是錯誤的結果,將被當做非常寶貴的經驗,那麼是如何從經驗中學習的呢?就是對比正確答案和錯誤答案之間的區別,然後把這個區別反向的傳遞回去,對每個相應的神經元進行一點點的改變。那麼下一次在訓練的時候就可以用已經改進一點點的神經元去得到稍微準確一點的結果。
在第一次給計算機看貓的圖片的時候,只有部分的神經元被激活,被激活的神經元所傳遞的信息是對輸出結果最有價值的信息。如果輸出的結果被判定為是狗,也就是說是錯誤的了,那麼就會修改神經元,一些容易被激活的神經元會變得遲鈍,另外一些神經元會變得敏感。這樣一次次的訓練下去,所有神經元的參數都在被改變,它們變得對真正重要的信息更為敏感。
Tensorflow 是谷歌開發的深度學習系統,用它可以很快速地入門神經網絡。它可以做分類,也可以做擬合問題,就是要把這個模式給模擬出來。
這是一個基本的神經網絡的結構,有輸入層,隱藏層,和輸出層。每一層點開都有它相應的內容,函數和功能。
那我們要做的就是要建立一個這樣的結構,然後把數據餵進去。 把數據放進去後它就可以自己運行,TensorFlow 翻譯過來就是向量在裡面飛。以下這個動圖的解釋就是,在輸入層輸入數據,然後數據飛到隱藏層飛到輸出層,用梯度下降處理,梯度下降會對幾個參數進行更新和完善,更新後的參數再次跑到隱藏層去學習,這樣一直循環直到結果收斂。
今天一口氣把整個系列都學完了,先來一段完整的代碼,然後解釋重要的知識點!
一. 搭建神經網絡基本流程
定義添加神經層的函數
訓練的數據、定義節點準備接收數據、定義神經層:隱藏層和預測層、定義loss 表達式、選擇optimizer 使loss 達到最小
然後對所有變量進行初始化,通過sess.run optimizer,迭代1000 次進行學習:
......
轉貼自: 36大數據
留下你的回應
以訪客張貼回應