MNIST數據集官網:http://yann.lecun.com/exdb/mnist/python
MNIST數據庫是很是經典的一個數據集,就像你學編程起初寫一個「Hello Word」的程序同樣,學Deep Learning你就會寫識別MNIST數據集的Model。數據庫
MNIST數據集是由0〜9手寫數字圖片和數字標籤所組成的,由60000個訓練樣本和10000個測試樣本組成,每一個樣本都是一張28 * 28像素的灰度手寫數字圖片。以下圖所示。編程
MNIST數據庫一共有四個文件案,分別爲測試
1. train-images-idx3-ubyte.gz:訓練集圖片(9912422字節),55000張訓練集,5000張驗證集編碼
2. train-labels-idx1-ubyte.gz:訓練集圖片對應的標籤(28881字節),code
3. t10k-images-idx3-ubyte .gz:測試集圖片(1648877字節),10000張圖片blog
4. t10k-labels-idx1-ubyte.gz:測試集圖片對應的標籤(4542字節)圖片
圖片是指0〜9手寫數字圖片,而標籤則是對應該圖片之實際數字。utf-8
TensorFlow提供了一個庫能夠對MNIST數據集進行下載和解壓。具體的是使用TensorFlow中input_data.py腳原本讀取數據及標籤,使用這種方式時,能夠不用事先下載好數據集,它會自動下載並存放到你指定的位置。具體程序以下所示:get
#!/usr/bin/env python # -*- coding:utf-8 -*- import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import matplotlib.pyplot as plt # MNIST_data指的是存放數據的文件夾路徑,one_hot=True 爲採用one_hot的編碼方式編碼標籤 mnist = input_data.read_data_sets('../datasets/MNIST_data/', one_hot=True) # load data train_X = mnist.train.images train_Y = mnist.train.labels print(train_X.shape, train_Y.shape) # 輸出訓練集樣本和標籤的大小 # 查看數據,例如訓練集中第一個樣本的內容和標籤 print(train_X[0]) # 是一個包含784個元素且值在[0,1]之間的向量 print(train_Y[0]) # 可視化樣本,下面是輸出了訓練集中前4個樣本 fig, ax = plt.subplots(nrows=2, ncols=2, sharex='all', sharey='all') ax = ax.flatten() for i in range(4): img = train_X[i].reshape(28, 28) # ax[i].imshow(img,cmap='Greys') ax[i].imshow(img) ax[0].set_xticks([]) ax[0].set_yticks([]) plt.tight_layout() plt.show()
運行結果爲:
輸出訓練樣本和標籤的大小 (55000, 784) (55000, 10) 查看第一個樣本的數據(數據不少,作了部分省略): [0. 0. 0. 0.3803922 0.37647063 0.3019608 0.46274513 0.2392157 0. 0. 0. 0.] print("查看第一個樣本的標籤"): [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]
訓練集中前4個樣本圖片顯示:
計算機視覺聯盟 報道 | 公衆號 CVLianMeng