python MNIST手寫識別數(shù)據(jù)調(diào)用API的方法
MNIST數(shù)據(jù)集比較小,一般入門機器學(xué)習(xí)都會采用這個數(shù)據(jù)集來訓(xùn)練
下載地址:yann.lecun.com/exdb/mnist/
有4個有用的文件:
train-images-idx3-ubyte: training set images
train-labels-idx1-ubyte: training set labels
t10k-images-idx3-ubyte: test set images
t10k-labels-idx1-ubyte: test set labels
The training set contains 60000 examples, and the test set 10000 examples. 數(shù)據(jù)集存儲是用binary file存儲的,黑白圖片。
下面給出load數(shù)據(jù)集的代碼:
import os
import struct
import numpy as np
import matplotlib.pyplot as plt
def load_mnist():
'''
Load mnist data
http://yann.lecun.com/exdb/mnist/
60000 training examples
10000 test sets
Arguments:
kind: 'train' or 'test', string charater input with a default value 'train'
Return:
xxx_images: n*m array, n is the sample count, m is the feature number which is 28*28
xxx_labels: class labels for each image, (0-9)
'''
root_path = '/home/cc/deep_learning/data_sets/mnist'
train_labels_path = os.path.join(root_path, 'train-labels.idx1-ubyte')
train_images_path = os.path.join(root_path, 'train-images.idx3-ubyte')
test_labels_path = os.path.join(root_path, 't10k-labels.idx1-ubyte')
test_images_path = os.path.join(root_path, 't10k-images.idx3-ubyte')
with open(train_labels_path, 'rb') as lpath:
# '>' denotes bigedian
# 'I' denotes unsigned char
magic, n = struct.unpack('>II', lpath.read(8))
#loaded = np.fromfile(lpath, dtype = np.uint8)
train_labels = np.fromfile(lpath, dtype = np.uint8).astype(np.float)
with open(train_images_path, 'rb') as ipath:
magic, num, rows, cols = struct.unpack('>IIII', ipath.read(16))
loaded = np.fromfile(train_images_path, dtype = np.uint8)
# images start from the 16th bytes
train_images = loaded[16:].reshape(len(train_labels), 784).astype(np.float)
with open(test_labels_path, 'rb') as lpath:
# '>' denotes bigedian
# 'I' denotes unsigned char
magic, n = struct.unpack('>II', lpath.read(8))
#loaded = np.fromfile(lpath, dtype = np.uint8)
test_labels = np.fromfile(lpath, dtype = np.uint8).astype(np.float)
with open(test_images_path, 'rb') as ipath:
magic, num, rows, cols = struct.unpack('>IIII', ipath.read(16))
loaded = np.fromfile(test_images_path, dtype = np.uint8)
# images start from the 16th bytes
test_images = loaded[16:].reshape(len(test_labels), 784)
return train_images, train_labels, test_images, test_labels
再看看圖片集是什么樣的:
def test_mnist_data():
'''
Just to check the data
Argument:
none
Return:
none
'''
train_images, train_labels, test_images, test_labels = load_mnist()
fig, ax = plt.subplots(nrows = 2, ncols = 5, sharex = True, sharey = True)
ax =ax.flatten()
for i in range(10):
img = train_images[i][:].reshape(28, 28)
ax[i].imshow(img, cmap = 'Greys', interpolation = 'nearest')
print('corresponding labels = %d' %train_labels[i])
if __name__ == '__main__':
test_mnist_data()
跑出的結(jié)果如下:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
pytorch + visdom CNN處理自建圖片數(shù)據(jù)集的方法
這篇文章主要介紹了pytorch + visdom CNN處理自建圖片數(shù)據(jù)集的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06

