MNIST數據集

MNIST數據庫(修正版國家標準與技術研究所數據庫)

MNIST是一個入門級的計算機視覺數據集,它包含各種打了標籤的手寫數字圖片.

import tensorflow as tf//導入庫
from tensorflow.examples.tutorials.mnist import input_data
#加載數據,如果不存在他會首先自動下載數據到指定的目錄
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

出現這個就成功了在這裏插入圖片描述

train_data=mnist.train.images//圖片
train_labels=np.asarray(mnist.train.labels,dtype=np.int32)//標籤
import matplotlib.pyplot as plt
import tensorflow as tf
#查看數據量
print("Shape of mnist.train.image {0}",format(mnist.train.images.shape))
print("Shape of mnist.test.image {0}",format(mnist.test.images.shape))
print("Shape of mnist.validation.image {0}",format(mnist.validation.images.shape))

下載下來的數據集被分成兩部分:

  1. 60000行的訓練數據集(mnist.train)
  2. 10000行的測試數據集(mnist.test)

這樣的切分很重要,在機器學習模型設計時必須有一個單獨的測試數據集不用於訓練而是用來評估這個模型的性能,從而更加容易把設計的模型推廣到其他數據集上(泛化)

我們把這些圖片設爲“xs”,把標籤設爲“ys”
每一張圖片包含28像素X28像素。我們可以用一個數字數組來表示這張圖片:我們把這個數組展開成一個向量,長度是 28*28 = 784
從這個角度來看,MNIST數據集的圖片就是在784維向量空間裏面的點, 並且擁有比較複雜的結構:第一個維度數字用來索引圖片,第二個維度數字用來索引每張圖片中的像素點.
在此張量裏的每一個元素,都表示某張圖片裏的某個像素的強度值,值介於0和1之間,相對應的MNIST數據集的標籤是介於0到9的數字,用來描述給定圖片裏表示的數字.

#隨意查看一個圖和它的label
print("Image:")
plt.imshow(mnist.test.image[5].reshape(28,28),cmap='gray')
plt.show()
print("Label:")
print(mnist.test.labels[5])

爲了用於這個教程,我們使標籤數據是one-hot vectors
一個one-hot向量除了某一位的數字是1以外其餘各維度數字都是0,數字n將表示成一個只有在第n維度(從0開始)數字爲1的10維向量
標籤0將表示成([1,0,0,0,0,0,0,0,0,0,0])
MNIST的每一張圖片都表示一個數字,從0到9。我們希望得到給定圖片代表每個數字的概率,比如說,有個人寫字不清楚,我們的模型可能推測,他寫的一張包含9的圖片代表數字9的概率是80%,但是判斷它還是有5%的概率是8,總之,最有可能是9,還有一定可能性是8,以此類推,其他數字的概率會更小一些.
這是一個使用softmax迴歸模型的經典案例

softmax模型可以用來給不同的對象分配概率,即使在之後,我們訓練更加精細的模型時,最後一步也需要用softmax來分配概率,就是一個事情有若干種可能性,所有可能性的和爲100%,就是1!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章