學習心得 用python讀取mnist資料集的方法

2021-10-01 22:55:38 字數 2276 閱讀 5398

mnist手寫數字資料集在機器學習中非常常見,這裡記錄一下用python從本地讀取mnist資料集的方法。

需要import gzip

讀取訓練集的**如下:

def

load_mnist_train

(path, kind=

'train'):

』『』path:資料集的路徑

kind:值為train,代表讀取訓練集

『』『

labels_path = os.path.join(path,

'%s-labels-idx1-ubyte.gz'

% kind)

images_path = os.path.join(path,

'%s-images-idx3-ubyte.gz'

% kind)

#使用gzip開啟檔案

with gzip.

open

(labels_path,

'rb'

)as lbpath:

#使用struct.unpack方法讀取前兩個資料,>代表高位在前,i代表32位整型。lbpath.read(8)表示一次從檔案中讀取8個位元組

#這樣讀到的前兩個資料分別是magic number和樣本個數

magic, n = struct.unpack(

'>ii'

,lbpath.read(8)

)#使用np.fromstring讀取剩下的資料,lbpath.read()表示讀取所有的資料

labels = np.fromstring(lbpath.read(

),dtype=np.uint8)

with gzip.

open

(images_path,

'rb'

)as imgpath:

magic, num, rows, cols = struct.unpack(

'>iiii'

,imgpath.read(16)

) images = np.fromstring(imgpath.read(

),dtype=np.uint8)

.reshape(

len(labels)

,784

)return images, labels

讀取測試集的**類似。

如果在本地對四個檔案解壓縮之後,得到的就是.ubyte格式的檔案,這時讀取的**有所變化。

def

load_mnist_train

(path, kind=

'train'):

』『』path:資料集的路徑

kind:值為train,代表讀取訓練集

『』『

labels_path = os.path.join(path,

'%s-labels-idx1-ubyte'

% kind)

images_path = os.path.join(path,

'%s-images-idx3-ubyte'

% kind)

#不再用gzip開啟檔案

with

open

(labels_path,

'rb'

)as lbpath:

#使用struct.unpack方法讀取前兩個資料,>代表高位在前,i代表32位整型。lbpath.read(8)表示一次從檔案中讀取8個位元組

#這樣讀到的前兩個資料分別是magic number和樣本個數

magic, n = struct.unpack(

'>ii'

,lbpath.read(8)

)#使用np.fromfile讀取剩下的資料

labels = np.fromfile(lbpath,dtype=np.uint8)

with gzip.

open

(images_path,

'rb'

)as imgpath:

magic, num, rows, cols = struct.unpack(

'>iiii'

,imgpath.read(16)

) images = np.fromfile(imgpath,dtype=np.uint8)

.reshape(

len(labels)

,784

)return images, labels

讀取之後可以檢視images和labels的長度,確認讀取是否正確。

學習心得 python學習心得

自從來了深圳工作以後,尤其是屢屢面試碰壁以後。發現其實自己的知識面很窄,做筆試題的時候絞盡腦汁還是漏洞百出,並不是不會做,而是出現一大堆不該有的失誤。每次被問道,對資料庫了解嗎?說一大堆看起來很高階的東西 好啊,那我們寫幾個sql語句吧。馬上完蛋了,沒了手冊關鍵字都記不起。了解哪幾種指令碼語言,sh...

Python學習心得

python 學習心得 定義乙個類的方法 class classname 其中 init 可以看成是類的建構函式,定義python的私有函式的方法是 funtionname,定義私有資料的方法是 dataname,看看下面的例子。class myclass a example class i 123...

python學習心得

一,高階特性 1,切片 start stop step l range 6 l 3,1,2 resulte is 3 2,迭代 2.1按itervalues d for k in d print k,d k 1 22 3 3 42.2 按iteritems for v in d.iteritems ...