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 ...