MNIST數據集介紹
MNIST數據集官網:http://yann.lecun.com/exdb/mnist/
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字節),
3. t10k-images-idx3-ubyte .gz:測試集圖片(1648877字節),10000張圖片
4. t10k-labels-idx1-ubyte.gz:測試集圖片對應的標簽(4542字節)
圖片是指0〜9手寫數字圖片,而標簽則是對應該圖片之實際數字。
MNIST 數據集下載及可視化
TensorFlow提供了一個庫可以對MNIST數據集進行下載和解壓。具體的是使用TensorFlow中input_data.py腳本來讀取數據及標簽,使用這種方式時,可以不用事先下載好數據集,它會自動下載並存放到你指定的位置。具體程序如下所示:
#!/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