本系列將分爲 8 篇 。本次爲第 5 篇 ,結合上一篇的應用實例 ,將前邊學到一些基礎知識用到手寫數字的識別分類上 。數組
首先 ,咱們得了解 MNIST 數據集 。這是一個手寫數字數據集 ,在深度學習入門學習中極具表明性 。能夠從官網下載該數據集 ,但事實上 TensorFlow 中提供了一個類來處理 MNIST 數據 ,這個類會自動下載並轉化格式 ,將數據從原始的數據包中解析成訓練和測試神經網絡時使用的格式 ,具體相關函數在接下來代碼中介紹 。
MNIST 數據集被分爲訓練數據集(60000張手寫數字圖片)和測試數據集(10000張手寫數字圖片)。
每一張圖片包含 2828 個像素 ,圖片裏的某個像素的強度值介於0-1之間。例如 ,數字 1 對應一個 2828 像素圖片 ,其像素強度以下 :網絡
咱們把這一個數組展開成一個向量 ,長度是 28*28=784 。所以在MNIST訓練數據集中 mnist.train.images 是一個形狀爲 [60000, 784] 的張量,第一個維度數字用來索引圖片,第二個維度數字用來索引每張圖片中的像素點。函數
MNIST 數據集標籤爲 0-9 十個數字 ,咱們用 one-hot 向量來表示 。以MNIST 數據集爲例 ,one-hot 向量指的是除了某一位數字爲 1 ,其餘維度都爲 0 ,好比數字 1 對應 [0,1,0,0,0,0,0,0,0,0] 。
那麼咱們就能夠獲得數據集中對應的標籤(labels)是若干個 one-hot 向量組成的矩陣 。以訓練集爲例 ,是一個 [60000,10] 的數字矩陣 。學習