python MNIST手写识别数据调用API的方法


Posted in Python onAugust 08, 2018

MNIST数据集比较小,一般入门机器学习都会采用这个数据集来训练

下载地址: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. 数据集存储是用binary file存储的,黑白图片。

下面给出load数据集的代码:

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()

跑出的结果如下:

python MNIST手写识别数据调用API的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python字符串处理实例详解
May 18 Python
django实现前后台交互实例
Aug 07 Python
Python模拟用户登录验证
Sep 11 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
python 搜索大文件的实例代码
Jul 08 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
python创建字典及相关管理操作
Apr 13 Python
python实现屏保计时器的示例代码
Aug 08 #Python
详解Python 装饰器执行顺序迷思
Aug 08 #Python
python Flask 装饰器顺序问题解决
Aug 08 #Python
Python BS4库的安装与使用详解
Aug 08 #Python
python特性语法之遍历、公共方法、引用
Aug 08 #Python
用Python shell简化开发
Aug 08 #Python
在Python中使用gRPC的方法示例
Aug 08 #Python
You might like
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
php实现的验证码文件类实例
2015/06/18 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
jquery JSON的解析方式
2009/07/25 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
Python实现的爬虫功能代码
2017/06/24 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
django rest framework 过滤时间操作
2020/07/12 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
酒店总经理欢迎词
2014/01/08 职场文书
2013年军训通讯稿
2014/02/05 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
2019年大学推荐信
2019/06/24 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js