訓練識別數字圖片的模型

TanjaWEP 7年前發布 | 29K 次閱讀 技術 機器學習

本文根據官方教程,通過MNIST數據,使用Softmax Regressio算法訓練一個輸入784像素的圖片,識別出其對應數字的模型

前一篇文章中我們配置了TensorFlow并根據官方教程訓練了一個簡單的模型,今天我們繼續訓練另外一個簡單的模型。

MNIST包含一個手寫的數字,就好像:

這個案例是為了解答:

  1. TensorFlow是怎么工作的?
  2. 機器學習的核心思想是什么?

你可以學習到:

  1. MNIST數據、Softmax Regression算法
  2. 建立一個可以基于觀察圖片的每一個像素來識別數字的模型
  3. 通過模型瀏覽上千個案例來訓練模型識別數字
  4. 通過測試數據,來驗證模型的準確度

I. MNIST數據

數據是在 Yann LeCun’s website 這上面。

該數據分為三部分

通過分離不同的數據,一部分用于訓練,一部分用戶測試,一部分用于學習,這樣才能驗證結果是訓練的模型自己生成的。

  1. mnist.train: 55_000個數據用于訓練
  2. mnist.test: 10_000個數據用于測試
  3. minst.validation: 5_000個數據用于驗證

每個數據有兩部分

  1. 手寫數字的圖片(x)( mnist.train.images 、 mnist.test.images ): 28px * 28px = 784px
  2. 對應的標簽(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

大概步驟

  1. 總結輸入的數據在某些類中的證據(we add up the evidence of our input being in certain classes)
  2. 將證據轉化為具體的可能性

做像素強度(intensities)的加權值,當圖片的強度(intentsity)與某個分類不一致,其權重為負數,當有強有力的證據證明是在那個分類,其權重為正數

最終的模型權重

藍色為正數權重,紅色為負數

大概算法

第i個類型、第j個像素、W為權重、x為輸入的圖片、b為偏移量

結果: $y = softmax(W_x$ + b)

 

來自:https://blog.dreamtobe.cn/tensorflow-mnist/

 

 本文由用戶 TanjaWEP 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!