MNIST数据集由Yann LeCun搜集,是一个大型的手写体数字数据库,通常用于训练各种图像处理系统,也被广泛用于机器学习领域的训练和测试。MNIST数字文字识别数据集数据量不会太多,而且是单色的图像,较简单,适合深度学习初学者练习建立模型、训练、预测。MNIST数据库中的图像集是NIST(National Institute of Standards and Technology)的两个数据库的组合:专用数据库1和特殊数据库3。数据集是有250人手写数字组成,一半是高中生,一半是美国人口普查局。

MNIST数据集共有训练数据60000项、测试数据10000项。每张图像的大小为28*28(像素),每张图像都为灰度图像,位深度为8(灰度图像是0-255)。

下载读取MNIST数据

  • 手动下载

下载地址:http://yann.lecun.com/exdb/mnist/

MNIST数据集包含4个文件,下载四个压缩文件,解压缩。解压缩后发现这些文件并不是标准的图像格式。这些图像数据都保存在二进制文件中。train文件是训练数据集,t10k是测试数据集,images文件是图像文件,lables文件是对应的标签文件。

train-images-idx3-ubyte.gz: training set images (9912422 bytes)

train-labels-idx1-ubyte.gz: training set labels (28881 bytes)

t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)

t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)

  • 使用TensorFlow下载

读取数据

  • 读取单张图像

MNIST的图像大小是28*28,先读取训练集中的第一张图像。注意:在 train-images-idx3-ubyte 文件头部有4个integer类型,需要跳过去。

程序代码

运行结果

  • 读取多张图像

读取100张的t10k的测试图像和标签,并且显示出来。

程序代码

运行结果

在TensorFlow中使用

MNIST数据集在机器学习方面已经被广泛使用,比如说在MNIST上采用Softmax回归训练,在MNIST上使用CNN做可视化训练等。在TensorFlow上MNIST可以直接被调取,只需要导入input_data.py这个文件就可以,不需要对其进行二进制文件转为图像的操作,使用tensorflow.contrib.learn中的read_data_sets来加载数据就可以了。代码如下,

注:这里使用的直接是二进制文件,如果下载的数据集是图像文件,在使用之前还得进行数据预处理(二维图像矩阵转换成一维向量、label数字转换成One-hot向量等)。

问题:使用tensorflow的input_data下载MNIST数据集时,会报错误如下,

Traceback (most recent call last):File "alex_mnist.py", line 5, in <module>mnist = input_data.read_data_sets("/tmp/data", one_hot=True)File "/home/cnu105/anaconda3/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 250, in new_funcreturn func(*args, **kwargs)File "/home/cnu105/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py", line 260, in read_data_setssource_url + TRAIN_IMAGES)File "/home/cnu105/anaconda3/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 250, in new_funcreturn func(*args, **kwargs)File "/home/cnu105/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 252, in maybe_downloadtemp_file_name, _ = urlretrieve_with_retry(source_url)File "/home/cnu105/anaconda3/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 250, in new_funcreturn func(*args, **kwargs)File "/home/cnu105/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 205, in wrapped_fnreturn fn(*args, **kwargs)File "/home/cnu105/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/base.py", line 233, in urlretrieve_with_retryreturn urllib.request.urlretrieve(url, filename)File "/home/cnu105/anaconda3/lib/python3.6/urllib/request.py", line 248, in urlretrievewith contextlib.closing(urlopen(url, data)) as fp:File "/home/cnu105/anaconda3/lib/python3.6/urllib/request.py", line 223, in urlopenreturn opener.open(url, data, timeout)File "/home/cnu105/anaconda3/lib/python3.6/urllib/request.py", line 526, in openresponse = self._open(req, data)File "/home/cnu105/anaconda3/lib/python3.6/urllib/request.py", line 544, in _open'_open', req)File "/home/cnu105/anaconda3/lib/python3.6/urllib/request.py", line 504, in _call_chainresult = func(*args)File "/home/cnu105/anaconda3/lib/python3.6/urllib/request.py", line 1361, in https_opencontext=self._context, check_hostname=self._check_hostname)File "/home/cnu105/anaconda3/lib/python3.6/urllib/request.py", line 1321, in do_openr = h.getresponse()File "/home/cnu105/anaconda3/lib/python3.6/http/client.py", line 1331, in getresponseresponse.begin()File "/home/cnu105/anaconda3/lib/python3.6/http/client.py", line 297, in beginversion, status, reason = self._read_status()File "/home/cnu105/anaconda3/lib/python3.6/http/client.py", line 258, in _read_statusline = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")File "/home/cnu105/anaconda3/lib/python3.6/socket.py", line 586, in readintoreturn self._sock.recv_into(b)File "/home/cnu105/anaconda3/lib/python3.6/ssl.py", line 1009, in recv_intoreturn self.read(nbytes, buffer)File "/home/cnu105/anaconda3/lib/python3.6/ssl.py", line 871, in readreturn self._sslobj.read(len, buffer)File "/home/cnu105/anaconda3/lib/python3.6/ssl.py", line 631, in readv = self._sslobj.read(len, buffer)
ConnectionResetError: [Errno 104] Connection reset by peer

经查,原因是 input_data.read_data_sets访问https://storage.googleapis.com/cvdf-datasets/mnist/被限制,需要修改read_data_sets函数,将source_url设置成http://yann.lecun.com/exdb/mnist/,修改后代码如下,

#/home/cnu105/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py# CVDF mirror of http://yann.lecun.com/exdb/mnist/
# DEFAULT_SOURCE_URL = 'https://storage.googleapis.com/cvdf-datasets/mnist/'
DEFAULT_SOURCE_URL = 'http://yann.lecun.com/exdb/mnist/'

重新运行,正常。

以上是关于MNIST数据集的介绍,下面是使用MNIST的例子。

TensorFlow实现AlexNet模型进行分类预测MNIST

Keras多层感知器识别手写数字

Keras卷积神经网络识别手写数字

MNIST——手写数字识别数据集相关推荐

  1. TF之LSTM:利用多层LSTM算法对MNIST手写数字识别数据集进行多分类

    TF之LSTM:利用多层LSTM算法对MNIST手写数字识别数据集进行多分类 目录 设计思路 实现代码 设计思路 更新-- 实现代码 # -*- coding:utf-8 -*- import ten ...

  2. 基于TensorFlow深度学习框架,运用python搭建LeNet-5卷积神经网络模型和mnist手写数字识别数据集,设计一个手写数字识别软件。

    本软件是基于TensorFlow深度学习框架,运用LeNet-5卷积神经网络模型和mnist手写数字识别数据集所设计的手写数字识别软件. 具体实现如下: 1.读入数据:运用TensorFlow深度学习 ...

  3. 1、基于Keras、Mnist手写数字识别数据集构建全连接(FC)神经网络训练模型

    文章目录 前言 一.MNIST数据集是什么? 二.构建神经网络训练模型 1.导入库 2.载入数据 3.数据处理 4.创建模型 5.编译模型 6.训练模型 7.评估模型 三.总代码 前言 提示: 1.本 ...

  4. MNIST手写数字识别数据集百度网盘下载

    MNIST数据集下载.百度网盘下载. 链接:https://pan.baidu.com/s/1GRdliqEYnVTseW1mWwIByQ 密码:t377

  5. 使用PYTORCH复现ALEXNET实现MNIST手写数字识别

    网络介绍: Alexnet网络是CV领域最经典的网络结构之一了,在2012年横空出世,并在当年夺下了不少比赛的冠军,下面是Alexnet的网络结构: 网络结构较为简单,共有五个卷积层和三个全连接层,原 ...

  6. 用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 (zz)

    用MXnet实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别 我想写一系列深度学习的简单实战教程,用mxnet做实现平台的实例代码简单讲解深度学习常用的一些技术方向和实战样例.这 ...

  7. 深度学习练手项目(一)-----利用PyTorch实现MNIST手写数字识别

    一.前言 MNIST手写数字识别程序就不过多赘述了,这个程序在深度学习中的地位跟C语言中的Hello World地位并驾齐驱,虽然很基础,但很重要,是深度学习入门必备的程序之一. 二.MNIST数据集 ...

  8. TensorFlow高阶 API: keras教程-使用tf.keras搭建mnist手写数字识别网络

    TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字识别网络 目录 TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字 ...

  9. 持久化的基于L2正则化和平均滑动模型的MNIST手写数字识别模型

    持久化的基于L2正则化和平均滑动模型的MNIST手写数字识别模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献Tensorflow实战Google深度学习框架 实验平台: Tens ...

最新文章

  1. 后台开发必读书籍--计算机操作系统
  2. 合成孔径雷达技术——概述
  3. python之知乎的正确打开方式
  4. CG CTF PWN When did you born?
  5. maven依赖传递和排除依赖冲突
  6. 让你的手机浏览器来一场AR风暴
  7. Python中的xxx+=xxx和xxx=xxx+xxx一些区别及执行过程
  8. k8s高可用集群多个主节点_k8s-高可用集群实现(keepalived)
  9. Plugin ‘scala’ is incompatible with this installation
  10. 手动实现伽马校正(python)
  11. 金蝶K3案例教程采购报表
  12. centos在图形界面和命令行之间切换的快捷键是什么?
  13. RedisTemplate使用
  14. php 跳转邮箱,JS简单实现点击跳转登陆邮箱功能的方法
  15. 基金男孩女孩的「养基」心碎史
  16. 【软件】Chrome收藏夹本地位置
  17. 1、学习笔记-谁说rookie不会数分(入门篇)
  18. aliyun短信及短信模板操作
  19. html中加hover啥意思,css中hover是什么意思
  20. 马尔科夫随机场(MRF)与吉布斯分布(Gibbs)

热门文章

  1. 基于Python的水母吃鱼游戏的设计与实现
  2. 使用SQL查询出每门课程的成绩均大于80分的学生姓名
  3. 火狐浏览器 访问所有HTTPS网站显示连接不安全解决办法
  4. 如何用天纵快速开发平台快速开发办公系统
  5. kisso改用RSA算法加密token
  6. html5视频作为页面背景,使用视频作为网页背景的技术探讨
  7. java8——Optinal类
  8. 优化企业银行账户服务器,农行多措并举优化企业账户服务
  9. 大学期间学习python的心得
  10. lombok(消除冗长)安装及简单介绍