天天看點

TensorFlow.NET機器學習入門【5】采用神經網絡實作手寫數字識别(MNIST)

 從這篇文章開始,終于要幹點正兒八經的工作了,前面都是準備工作。這次我們要解決機器學習的經典問題,MNIST手寫數字識别。

首先介紹一下資料集。請首先解壓:TF_Net\Asset\mnist_png.tar.gz檔案

 檔案夾内包括兩個檔案夾:training和validation,其中training檔案夾下包括60000個訓練圖檔validation下包括10000個評估圖檔,圖檔為28*28像素,分别放在0~9十個檔案夾中。

程式總體流程和上一篇文章介紹的BMI分析程式基本一緻,畢竟都是多元分類,有幾點不一樣。

1、BMI程式的特征資料(輸入)為一維數組,包含兩個數字,MNIST的特征資料為28*28的二位數組;

2、BMI程式的輸出為3個,MNIST的輸出為10個;

網絡模型建構如下:

這個網絡裡用到了兩個新方法,需要解釋一下:

1、Flatten方法:這裡表示拉平,把28*28的二維數組拉平為含784個資料的一維數組,因為二維數組無法進行運算;

2、Rescaling 方法:就是對每個資料乘以一個系數,因為我們從圖檔擷取的資料為每一個位點的灰階值,其取值範圍為0~255,是以乘以一個系數将資料縮小到1以内,以免後面運算時溢出。

其它基本和上一篇文章介紹的差不多,全部代碼如下:

TensorFlow.NET機器學習入門【5】采用神經網絡實作手寫數字識别(MNIST)
TensorFlow.NET機器學習入門【5】采用神經網絡實作手寫數字識别(MNIST)

View Code

另有兩點說明:

1、由于對圖檔的讀取比較耗時,是以我采用了一個方法,就是把讀取到的資料序列化到一個二進制檔案中,下次直接從二進制檔案反序列化即可,大大加快處理速度。

2、我沒有采用validation圖檔進行評估,隻是簡單選了20個樣本測試了一下。

【相關資源】

 源碼:Git: https://gitee.com/seabluescn/tf_not.git

項目名稱:NN_MultipleClassification_MNIST

目錄:檢視TensorFlow.NET機器學習入門系列目錄

簽名區:

如果您覺得這篇部落格對您有幫助或啟發,請點選右側【推薦】支援,謝謝!

繼續閱讀