訓練識別數字圖片的模型
本文根據官方教程,通過MNIST數據,使用Softmax Regressio算法訓練一個輸入784像素的圖片,識別出其對應數字的模型
前一篇文章中我們配置了TensorFlow并根據官方教程訓練了一個簡單的模型,今天我們繼續訓練另外一個簡單的模型。
MNIST包含一個手寫的數字,就好像:
這個案例是為了解答:
- TensorFlow是怎么工作的?
- 機器學習的核心思想是什么?
你可以學習到:
- MNIST數據、Softmax Regression算法
- 建立一個可以基于觀察圖片的每一個像素來識別數字的模型
- 通過模型瀏覽上千個案例來訓練模型識別數字
- 通過測試數據,來驗證模型的準確度
I. MNIST數據
數據是在 Yann LeCun’s website 這上面。
該數據分為三部分
通過分離不同的數據,一部分用于訓練,一部分用戶測試,一部分用于學習,這樣才能驗證結果是訓練的模型自己生成的。
- mnist.train: 55_000個數據用于訓練
- mnist.test: 10_000個數據用于測試
- minst.validation: 5_000個數據用于驗證
每個數據有兩部分
- 手寫數字的圖片(x)( mnist.train.images 、 mnist.test.images ): 28px * 28px = 784px
- 對應的標簽(y)( mnist.train.labels 、 mnist.test.labels )
如數字 1 :
- mnist.[train/test].images 是一個tensor,由55_000個由784個點的二維數組組成,數組中的每個值代表每個像素點,像素點有色的根據淺到深是0到1,無色為0,每個數組所呈現的數字對應一個label,我們表示為[55000,784]
- minst.[train/test].labels 也是一個tensor,由55_000個由10個值的一維數組組成,數組中有且僅有一個為1,其余為0,數組的index表示標簽所代表的數字,如3表示為[0,0,0,1,0,0,0,0,0,0]],我們表示為[55000,10]
II. Softmax Regression算法
我們算法要盡量準確的通過圖片(784個像素點)所呈現的,讓結果中正確的數字所占的比例盡量的高,如給出的圖片對應的數字是9,模型運算結果可能是: 80%的概率是9,5%概率是8,15%的概率是其他。
該算法使用場景:從不同的事件中為一個對象分配可能性,因為該算法給我們一個0到1的列表,并且加起來等于1
大概步驟
- 總結輸入的數據在某些類中的證據(we add up the evidence of our input being in certain classes)
- 將證據轉化為具體的可能性
做像素強度(intensities)的加權值,當圖片的強度(intentsity)與某個分類不一致,其權重為負數,當有強有力的證據證明是在那個分類,其權重為正數
最終的模型權重
藍色為正數權重,紅色為負數
大概算法
第i個類型、第j個像素、W為權重、x為輸入的圖片、b為偏移量
結果: $y = softmax(W_x$ + b)
來自:https://blog.dreamtobe.cn/tensorflow-mnist/
本文由用戶 TanjaWEP 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!