MNIST是一個入門級的計算機視覺數據集,它包含60000個訓練數據和10000個測試數據。每個樣本爲下面各種手寫數字圖片:
它也包含每一張圖片對應的標籤,告訴我們這個是數字幾。比如,上面這四張圖片的標籤分別是5,0,4,1。
MNIST的官方網站 :http://yann.lecun.com/exdb/mnist/
可以查看該項目目前的最高紀錄:http://rodrigob.github.io/are_we_there_yet/build/classification_datasets_results.html
訪問上述網站,可以查看MNIST的分類記錄和所用分類模型。
本文旨在學習利用tensorflow進行大型數據集處理,而不是構造一個很複雜的模型,最後期望達到99.2%的精度,如果想學習更爲複雜的模型可以參考上述網站。
TensorFlow是一個非常強大的用來做大規模數值計算的庫。其所擅長的任務之一就是實現以及訓練深度神經網絡。
在本教程中,我們將學到構建一個TensorFlow模型的基本步驟,並將通過這些步驟爲MNIST構建一個深度卷積神經網絡。
下載數據集
MNIST數據集的官網是Yann LeCun's website(http://yann.lecun.com/exdb/mnist/
)。可以直接下載數據集。
建議python爬蟲代碼用於自動下載和安裝這個數據集:https://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/examples/tutorials/mnist/input_data.py
複製上面代碼,運行上面代碼會自動創建一個'MNIST_data'的目錄來存儲數據。
下載下來的數據集被分成兩部分:60000行的訓練數據集(mnist.train)和10000行的測試數據集(mnist.test)。這樣的切分很重要,在機器學習模型設計時必須有一個單獨的測試數據集不用於訓練而是用來評估這個模型的性能,從而更加容易把設計的模型推廣到其他數據集上(泛化)。
正如前面提到的一樣,每一個MNIST數據單元有兩部分組成:一張包含手寫數字的圖片和一個對應的標籤。我們把這些圖片設爲“xs”,把這些標籤設爲“ys”。訓練數據集和測試數據集都包含xs和ys,比如訓練數據集的圖片是 mnist.train.images ,訓練數據集的標籤是 mnist.train.labels。