TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅
TensorFlow學習筆記(二):快速理解Tutorial第一個例子-MNIST機器學習入門
標簽:?機器學習SoftmaxTensorFlow教程 2016-08-02 22:12?3729人閱讀?評論(0)?收藏?舉報 ?分類: TensorFlow(4)??深度學習 DeepLearning(2)?版權聲明:本文為博主原創文章,未經博主允許不得轉載。
目錄(?)[+]
??? TensorFlow教程的第一章“MNIST機器學習入門”很簡單,用了一個很簡單的網絡,實現了MNIST樣本訓練。
??? 教程鏈接:http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_beginners.html
??? 下面這些內容主要是解釋這個教程中不是特別明確的地方。
1. 怎樣理解MNIST
MNIST的全稱是Mixed National Institute of Standards and Technology database,是一系列帶標記的數字圖片。原始的NIST數據集的訓練集是美國人口普查局的雇員的筆跡,而驗證集是采集自美國中學生的筆跡。所以從機器學習的角度看,這是一種不太合理的樣本采集。因此Lecun在進行卷積神經網絡的研究時候從原始的NIST兩個數據集中選擇并重新混合形成新的訓練集和驗證集,也就是現在的MNIST。MNIST的圖片一般都是28*28的圖片,每個像素值進行了歸一化,使得其在0-1范圍內,不過也有部分數據集把它們又恢復到0-255,每個數字圖片都有對應的標記。MNIST的訓練集一共有60000個樣本,而驗證集有10000個樣本。
2.怎樣理解權值和Softmax
“MNIST機器學習入門”里面,沒有用卷積神經網絡,而是用了一個全連接神經網絡+Softmax輸出層。
MNIST的一幅圖片是28*28,因此一共有784個像素值,在第一個例子里面,我們就直接就考慮用這784個數字得出正確的數字結果。最簡單的考慮,我們要對這個784個數字進行加權求和,然后加點偏置,然后衡量一下得出的結果,看到底和哪個數字最像。那么這個加權加偏移的結構就是全連接神經網,而這個衡量結果的過程就是Softmax。實際的運算是將784個像素輸入加權,并且用不同的權值加權10次(因為有0-9一共10個數字),得到10個不同的結果,最后使用Softmax進行結果的輸出。
Softmax的公式如下,這個Xi是得到的10個不同的結果。
因此,最終得到的10個輸出都會有一個概率值,這個概率值處于0-1之間,而且10個輸出相加等于1。
將整個神經網絡表示成一個表達式,就是:
其中W是權值,b是偏移
3.怎樣訓練這個網絡?
按照TensorFlow的封裝,訓練這個例子中的神經網絡只是幾句話的事情。
為了衡量目前神經網絡中的權值和偏移是否合理,我們可以定義交叉熵。交叉熵的公式是:
y?是我們預測的概率分布,?y'?是實際的分布,比如我這個數字是2,那么我實際的分布就應該是(0,0,1,0,0,0,0,0,0,0)。而神經網輸出的結果即預測的分布y可能是(0.01,0.05,0.5,0.05,0.04.......),那么交叉熵就是-log(0.5)>0,因此如果神經網絡的性能約好,那么交叉熵就會越小,最終接近于0. 在這個例子的訓練中,使用的是隨機梯度下降法結合反向傳播進行參數訓練。隨機梯度下降可以看Andrew NG的機器學習講義,也可以百度一篇文章。不過TensorFlow封裝的比較好,所以只需要3句話就可以訓練1000次,100是每次隨機選擇100個樣本進行訓練:
[python]?view plaincopy
TensorFlow教程第一章用了一個十分簡單的網絡結構,重點講了如何設定網絡,如何訓練,如何計算正確率。在下一章里面,教程會介紹如何用復雜一些的架構,取得更好的訓練效果。
總結
以上是生活随笔為你收集整理的TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorFlow损失函数(loss
- 下一篇: 中国程序员如何升职加薪,也许我们该学学印