深度學習,教你使用Tensorflow2.0識別手寫數字(上)

課前知識

   新版的Tensorflow2.0與原版的Tensorflow有着較大的更新和變動,Tensorflow2.0將Keras作爲默認高級API,並捨棄掉其它的API。此外,另外較大的變動的是將用於機器學習的實驗和研究平臺 Eager execution 設置爲默認優先模式, 這樣設置的好處是我們不用再像以前一樣預先定義靜態圖,任何的運算在調用之後都可以直接執行。與原版相比,Tensorflow2.0更方便,大幅降低了初學者學習的難度。

   這裏並不對Tensorflow2.0的其它特性做具體描述,總之我們可以比較清楚的明白,Keras是我們學習的首要基礎,下文便是對Keras一些常用操作結合一些基本案例來進行描述。

Tensorflow2.0的安裝

1.Tensorflow2.0的主要配置環境及使用還是在Anaconda及Jupyter notebook裏,對於Anaconda的安裝這裏不做過多描述,有很多博客有很仔細的教程,這裏主要想講的一點的關於Tensorflow2.0安裝的點,因爲現在用在Anaconda Prompt 直接 pip install 指令安裝實在是太慢了,經常會中斷,因此我們可以用國內的一些鏡像源進行安裝,大家可以輸入以下指令,中間多了一個網站,然後就會發現安裝速度特別快了,其它庫的安裝也是一樣的,把後面庫的名字改掉即可。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu==2.0.0-alpha0

 

MNIST 數據集已經是一個被”嚼爛”了的數據集, 很多教程都會對它”下手”, 幾乎成爲一個 “典範”. 不過有些人可能對它還不是很瞭解, 下面來介紹一下.

MNIST 數據集可在 http://yann.lecun.com/exdb/mnist/ 獲取, 它包含了四個部分:

Training set images: train-images-idx3-ubyte.gz (9.9 MB, 解壓後 47 MB, 包含 60,000 個樣本)Training set labels: train-labels-idx1-ubyte.gz (29 KB, 解壓後 60 KB, 包含 60,000 個標籤)Test set images: t10k-images-idx3-ubyte.gz (1.6 MB, 解壓後 7.8 MB, 包含 10,000 個樣本)Test set labels: t10k-labels-idx1-ubyte.gz (5KB, 解壓後 10 KB, 包含 10,000 個標籤)

MNIST 數據集來自美國國家標準與技術研究所, National Institute of Standards and Technology (NIST). 訓練集 (training set) 由來自 250 個不同人手寫的數字構成, 其中 50% 是高中學生, 50% 來自人口普查局 (the Census Bureau) 的工作人員. 測試集(test set) 也是同樣比例的手寫數字數據.

利用TensorFlow代碼下載MNIST

TensorFlow 提供了一個庫,可以直接用來自動下載與安裝MNIST, 見如下代碼:

from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data", one_hot=True)

其中"MNIST_data"爲保存MNIST數據的文件夾名,其中還會遇到

ModuleNotFoundError: No module named 'tensorflow.examples.tutorials'

這個問題,則需要參考小編博客的處理文章:

https://blog.csdn.net/qq_43060552/article/details/103189040

 

MNIST 數據集中的圖片

MNIST 數據集中的圖片是28X 28 Pixel, 所以,每一幅圖就是1 行784 ( 28X28) 列

的數據, 括號中的每一個值代表一個像素。

• 如果是黑白的圖片,圖片中黑色的地方數值爲0 ; . 有圖案的地方,數值爲O r-,....; 255

之間的數字, 代表其顏色的深度。

• 如果是彩色的圖片, 一個像素會由3 個值來表示RGB C 紅、黃、藍) 。

輸出MNIST 裏面的信息

代碼:



# -*- coding: utf-8 -*-"""Created on Thu Nov 21 16:38:15 2019
@author: Cable-Ching"""from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data", one_hot=True)print ( ' 輸入數據:', mnist.train.images)print ( ' 輸入數據打shape :', mnist.train.images.shape)import pylabim = mnist.train.images[1]im = im.reshape(-1 ,28)pylab.imshow(im)pylab.show()

結果​​​​​​​

Extracting MNIST_data\train-images-idx3-ubyte.gzExtracting MNIST_data\train-labels-idx1-ubyte.gzExtracting MNIST_data\t10k-images-idx3-ubyte.gzExtracting MNIST_data\t10k-labels-idx1-ubyte.gz 輸入數據:[[0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] ... [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.]] 輸入數據打shape : (55000, 784)

——————想跟着博主學習python,tensorflow可以關注微信公衆號  :   碼奮

 

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