http://gitbook.cn/gitchat/column/59f7e38160c9361563ebea95/topic/59f7e86d60c9361563ebeee5html
wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.htmlgit
手寫圖片識別的實現,分爲三步:數組
input層表明將二維數組從全部行都排列成一行,hidden層表明若干次處理,output層存儲計算獲得的結果,最後輸出機率最大的網絡
知乎神經網絡的解釋
總結一下:
神經元就是分類器,能夠根據正確的值進行調整機器學習反向傳播訓練神經網絡函數
1.神經網絡深刻淺出
!!!!!!!!!!!!!!!!!認真看兩遍,保證你神清氣爽。看懂了後,回來點個贊,就當你的答謝了。這個博客下的另外一篇文章也寫的不錯
2.從機器學習談起 推薦 不錯,不過,我推的都只是適合初學者哦,大神們繞道走開
3.還有一篇關於SVM的,雖然有點跑題了,可是也以爲特別好。SVM講解
雖然第三個連接有點跑題,可是講真,學AI怎能不學SVM,這是我在一次雙語課上作pre,查資料用到的最多的一個blog了。認真看兩遍,基本能夠本身跑代碼了。仍是不會的,歡迎私信我,一塊兒進步。哈哈哈哈哈
開心,我覺得會沒人看,一夜醒來贊變多了,也算是確定了。學神經網絡的人兒們好好努力哦,好了,大早上的,我也繼續看書了。學習做者:知乎用戶 連接:https://www.zhihu.com/question/22553761/answer/267280164
來源:知乎 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。測試
Kaggle 裏包含了42000份訓練數據和28000份測試數據(和谷歌準備的 MNIST 數據,在數量上有所不一樣)。訓練和測試數據的下載地址能夠百度也能夠點這裏。下載下來是兩個CVS文件。
優化
這個模型,組成是這樣的:編碼
神經網絡:由不少個神經元組成,每一個神經元接收不少個輸入:[X1,X2….Xn],加權相加而後加上偏移量後,看是否是超過了某個閥值,超過了發出1,沒超過發出0。
神經網絡:由不少個神經元組成,每一個神經元接收不少個輸入:[X1,X2….Xn],加權相加而後加上偏移量後,看是否是超過了某個閥值,超過了發出1,沒超過發出0。
想要成爲激活函數,你得有兩把刷子啊。這兩把刷子是:一是你得到處可微,可微分才能求導,求極值。二是要非線性的,由於線性模型的表達能力不夠。
目前主流的幾個激活函數是:sigmoid,tanh,ReLU。
sigmoid:採用 S 形函數,取值範圍[0,1] tanh:雙切正切函數,取值範圍[-1,1]
ReLU:簡單而粗暴,大於0的留下,不然一概爲0。
SoftMax:咱們知道 max(A,B),是指 A 和 B 裏哪一個大就取哪一個值,但咱們有時候但願比較小的那個也有必定機率取到,怎麼辦呢?咱們就按照兩個值的大小,計算出機率,按照這個機率來取 A 或者 B。好比A=9,B=1,那取 A 的機率是90%,取B的機率是10%。
損失函數:損失函數是模型對數據擬合程度的反映,擬合得越好損失應該越小,擬合越差損失應該越大,而後咱們根據損失函數的結果對模型進行調整。
交叉熵:這個概念要解釋的簡單,那就不許確,若是要準確,那可能一千字都打不住。這裏說一個簡單但不必定準確的解釋吧。
好比,你想把乾坤大挪移練到第七層大圓滿,你如今是第五層,那你還差兩層,這個兩層就是你和大圓滿之間的距離。交叉熵通俗的講就是如今的訓練程度和圓滿之間的距離,咱們但願距離越小越好,因此交叉熵能夠做爲一個損失函數,來衡量和目標之間的距離。
梯度降低:這個概念能夠這樣理解,咱們要解決的問題是一座山,答案在山底,咱們從山頂到山底的過程就是解決問題的過程。
在山頂,想找到最快的下山的路。這個時候,咱們的作法是什麼呢?在每次選擇道路的時候,選最陡的那條路。梯度是改變率或者斜度的另外一個稱呼,用數學的語言解釋是導數。對於求損失函數最小值這樣的問題,朝着梯度降低的方向走,就能找到最優值了。
1,載入數據,並對數據進行處理
在寫代碼的過程當中,數據的預處理是最大的一塊工做,作一個項目,60%以上的代碼在作數據預處理。 這個項目的預處理,分爲5步: