06.04 使用tensorflow構建一個單層的手寫數字識別

本篇文章主要介紹使用tensorflow來構建一個單層的神經網絡模型,最終模型在訓練集和測試集上的準確率可以達到92%,整個過程主要分為六個步驟。

使用tensorflow構建一個單層的手寫數字識別

1、導入相關函數和模塊

使用tensorflow構建一個單層的手寫數字識別

2、使用tensorflow下載MNIST數據集

整個數據集一共包含70000張圖片,其中有55000張圖片是訓練集,5000張圖片是驗證集,10000張圖片是測試集,每張圖片都是單通道圖片,一共包含0到9十種不同的手寫數字圖片。

使用tensorflow構建一個單層的手寫數字識別

3、定義相關變量

我們將每張圖片28×28×1=784,轉變成為一個784維的向量,在這裡我們忽略了圖片的位置信息,後面介紹使用卷積神經網絡來識別手寫數字就考慮了圖片的位置信息。定義一個輸入X和輸出Y_使用tensorflow的placeholder進行定義,輸入X是一個784維的相量,輸出是一個10維的向量通過softmax函數輸出對應該圖片屬於0到9的概率,使用Variable來定義一個權重W,和截距b。

使用tensorflow構建一個單層的手寫數字識別

4、定義損失函數選擇優化算法

對於分類問題我們可以採用交叉熵作為損失函數,在本篇文章中,選擇交叉熵的平均值作為損失函數。使用梯度下降算法作為優化算法來使得損失函數最小化。

使用tensorflow構建一個單層的手寫數字識別

5、開始迭代訓練模型

在訓練模型之前需要先創建一個session會話,然後初始化變量,這裡每次迭代的時候只使用了100張圖片進行訓練。

使用tensorflow構建一個單層的手寫數字識別

6、評估模型的準確率

tf.argmax函數返回的是一個索引下標,通過equal函數來比較預測值和實際值是否相等,返回一個bool類型的變量,通過cast函數可以將bool類型轉換成為整數類型(0表示false,1表示true),最後再通過平均值來表示準確率。

使用tensorflow構建一個單層的手寫數字識別

完整代碼鏈接:https://blog.csdn.net/sinat_29957455/article/details/80572980


分享到:


相關文章: