溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用NumPy讀取MNIST數(shù)據(jù)的實(shí)現(xiàn)代碼示例

發(fā)布時(shí)間:2020-09-16 13:53:14 來(lái)源:腳本之家 閱讀:324 作者:justidle 欄目:開發(fā)技術(shù)

NumPy

什么是NumPy

NumPy是 Python 語(yǔ)言的一個(gè)擴(kuò)展程序庫(kù),支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。主頁(yè)為https://numpy.org/。

安裝NumPy

使用pip工具來(lái)安裝。

python -m pip install numpy

使用NumPy讀取mnist數(shù)據(jù)

如果直接從網(wǎng)絡(luò)上讀取mnist數(shù)據(jù),恭喜你,目前國(guó)內(nèi)基本需要一個(gè)小時(shí)以上。所以建議預(yù)先下載mnist數(shù)據(jù)包。

工作環(huán)境

當(dāng)前我的工作環(huán)境如下:Win10 + Anaconda。使用Spyder4做為IDE。Anaconda的安裝可以參考我的blog。

將數(shù)據(jù)放置到指定目錄

下圖是我當(dāng)前的工作目錄環(huán)境,因此在C:\Users\sus20\.spyder-py3-dev目錄下,建立子目錄minist。如下圖所示:

使用NumPy讀取MNIST數(shù)據(jù)的實(shí)現(xiàn)代碼示例

將下載好的四個(gè)gz文件拷貝到這個(gè)目錄下,并將這四個(gè)gz文件解壓。如下圖所示:

使用NumPy讀取MNIST數(shù)據(jù)的實(shí)現(xiàn)代碼示例

使用NumPy讀取MNIST

load_mnist 函數(shù)返回兩個(gè)數(shù)組,第一個(gè)是一個(gè) n * m 維的 NumPy array(images),這里的 n 是樣本行數(shù),m 是特征列數(shù)。訓(xùn)練數(shù)據(jù)集包含 60,000 個(gè)樣本,測(cè)試數(shù)據(jù)集包含 10,000 樣本。

在 MNIST 數(shù)據(jù)集中的每張圖片由 28 * 28 個(gè)像素點(diǎn)構(gòu)成,每個(gè)像素點(diǎn)用一個(gè)灰度值表示。在這里,我們將 28 * 28 的像素展開為一個(gè)一維的行向量,這些行向量就是圖片數(shù)組里的行(每行 784 個(gè)值, 或者說(shuō)每行就是代表了一張圖片)。

load_mnist 函數(shù)返回的第二個(gè)數(shù)組(labels) 包含了相應(yīng)的目標(biāo)變量,也就是手寫數(shù)字的類標(biāo)簽(整數(shù) 0-9)。

import os
import struct
import numpy as np
 
def load_mnist(path, kind='train'):
  """Load MNIST data from `path`"""
  labels_path = os.path.join(path,'%s-labels-idx1-ubyte'% kind)
  
  images_path = os.path.join(path,'%s-images-idx3-ubyte'% kind)
  
  with open(labels_path, 'rb') as lbpath:
    magic, n = struct.unpack('>II',lbpath.read(8))
    labels = np.fromfile(lbpath,dtype=np.uint8)
  #讀入magic是一個(gè)文件協(xié)議的描述,也是調(diào)用fromfile 方法將字節(jié)讀入NumPy的array之前在文件緩沖中的item數(shù)(n). 
 
  with 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
 
print(load_mnist("minst_data"))

運(yùn)行代碼,將得到如下圖結(jié)果,說(shuō)明我們已經(jīng)正確的從本地讀取MNIST數(shù)據(jù)集。

使用NumPy讀取MNIST數(shù)據(jù)的實(shí)現(xiàn)代碼示例

下一步,我們要開始使用TensorFlow讀取MNIST數(shù)據(jù)集。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI