八、AlexNet可能會提高你的準確率

八、AlexNet可能會提高你的準確率

從之前的文章中你學會了使用TensorFlow來對經典的手寫數字集的一種識別,最終訓練出來的識別準確率雖然不是很高,因為他的神經**實在實在是太簡單了。只有寥寥簡單的五層。

我們這次采用AlexNet神經**來再次對mnist數據進行測試。

使用在MNIST學習的手寫數字識別用CNN寫數字組α的%(=/10)正確?

你這里的正確率應該是指手寫數字識別的正確率,其計算公式為:正確率=模型正確識別數字類型的樣本數/總樣本數舉個例子,假設有3張圖片,分別為手寫體的3,7,8,而你構建的模型分別打上了3,7,9的標簽,那么只有3,7兩張圖片是正確識別的數字,8被錯誤識別為9,因此正確率為2/3,即約為66.7%。

MNIST數據集上手寫數字識別準確率是否能達到100

其實就是python怎么讀取binnary filemnist的結構如下,選取train-images TRAINING SET IMAGE FILE (train-images-idx3-ubyte):[offset] [type] [value] [description] 0000 32 bit integer 0x00000803(2051) magic number 0004 32 bit integer 60000 number of images 0008 32 bit integer 28 number of rows 0012 32 bit integer 28 number of columns 0016 unsigned byte ?? pixel 0017 unsigned byte ?? pixel …….. xxxx unsigned byte ?? pixel 也就是之前我們要讀取4個 32 bit integer 試過很多方法,覺得最方便的,至少對我來說還是使用struct.unpack_from()filename = \’train-images.idx3-ubyte\’binfile = open(filename , \’rb\’)buf = binfile.read()先使用二進制方式把文件都讀進來index = 0magic, numImages , numRows , numColumns = struct.unpack_from(\’>IIII\’ , buf , index)index += struct.calcsize(\’>IIII\’)然后使用struc.unpack_from\’>IIII\’是說使用大端法讀取4個unsinged int32 然后讀取一個圖片測試是否讀取成功im = struct.unpack_from(\’>784B\’ ,buf, index)index += struct.calcsize(\’>784B\’) im = np.array(im)im = im.reshape(28,28) fig = plt.figure()plotwindow = fig.add_subplot(111)plt.imshow(im , cmap=\’gray\’)plt.show()\’>784B\’的意思就是用大端法讀取784個unsigned byte 完整代碼如下import numpy as npimport structimport matplotlib.pyplot as plt filename = \’train-images.idx3-ubyte\’binfile = open(filename , \’rb\’)buf = binfile.read() index = 0magic, numImages , numRows , numColumns = struct.unpack_from(\’>IIII\’ , buf , index)index += struct.calcsize(\’>IIII\’) im = struct.unpack_from(\’>784B\’ ,buf, index)index += struct.calcsize百科(\’>784B\’) im = np.array(im)im = im.reshape(28,28) fig = plt.figure()plotwindow = fig.add_subplot(111)plt.imshow(im , cmap=\’gray\’)plt.show()只是為了測試是否成功所以只讀了一張圖片