從這篇文章開始,終于要幹點正兒八經的工作了,前面都是準備工作。這次我們要解決機器學習的經典問題,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以内,以免後面運算時溢出。
其它基本和上一篇文章介紹的差不多,全部代碼如下:

View Code
另有兩點說明:
1、由于對圖檔的讀取比較耗時,是以我采用了一個方法,就是把讀取到的資料序列化到一個二進制檔案中,下次直接從二進制檔案反序列化即可,大大加快處理速度。
2、我沒有采用validation圖檔進行評估,隻是簡單選了20個樣本測試了一下。
【相關資源】
源碼:Git: https://gitee.com/seabluescn/tf_not.git
項目名稱:NN_MultipleClassification_MNIST
目錄:檢視TensorFlow.NET機器學習入門系列目錄
簽名區:
如果您覺得這篇部落格對您有幫助或啟發,請點選右側【推薦】支援,謝謝!