MNIST是一个非常有名的手写体数字识别数据集,在很多资料中,这个数据集都会被用作深度学习的入门样例。而TensorFlow的封装让使用MNIST数据集变得更加方便。MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练数据,10000张图片作为测试数据。在MNIST数据集中的每一张图片都代表了0~9中的一个数字。图片的大小都为28*28,且数字都会出现在图片的正中间,如下图所示:

在上图中右侧显示了一张数字1的图片,而右侧显示了这个图片所对应的像素矩阵,MNIST数据集提供了4个下载文件,具体参考①,在tensorflow中可将这四个文件直接下载放于一个目录中并加载,如下代码input_data.read_data_sets所示,如果指定目录中没有数据,那么tensorflow会自动去网络上进行下载。下面代码介绍了如何使用tensorflow操作MNIST数据集。

from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tfmnist = input_data.read_data_sets('/home/workspace/python/tf/data/mnist',one_hot=True)
# 打印“Training data size: 55000”
print "Training data size: ",mnist.train.num_examples
# 打印“Validating data size: 5000”
print "Validating data size: ",mnist.validation.num_examples
# 打印“Testing data size: 10000”
print "Testing data size: ",mnist.test.num_examples
# 打印“Example training data: [0. 0. 0. ... 0.380 0.376 ... 0.]”
print "Example training data: ",mnist.train.images[0]
# 打印“Example training data label: [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]”
print "Example training data label: ",mnist.train.labels[0]batch_size = 100
# 从train的集合中选取batch_size个训练数据
xs, ys = mnist.train.next_batch(batch_size)
# 输出“X shape:(100,784)”
print "X shape: ", xs.shape
# 输出"Y shape:(100,10)"
print "Y shape: ", ys.shape

从上面的代码中可以看出,通过input_data.read_data_sets函数生成的类会自动将MNIST数据集划分为train, validation和test三个数据集,其中train这个集合内含有55000张图片,validation集合内含有5000张图片,这两个集合组成了MNIST本身提供的训练数据集。test集合内有10000张图片,这些图片都来自与MNIST提供的测试数据集。处理后的每一张图片是一个长度为784的一维数组,这个数组中的元素对应了图片像素矩阵中的每一个数字(28*28=784)。因为神经网络的输入是一个特征向量,所以在此把一张二维图像的像素矩阵放到一个一维数组中可以方便tensorflow将图片的像素矩阵提供给神经网络的输入层。像素矩阵中元素的取值范围为[0, 1],它代表了颜色的深浅。其中0表示白色背景,1表示黑色前景。为了方便使用随机梯度下降,input_data.read_data_sets函数生成的类还提供了mnist.train.next_batch函数,它可以从所有的训练数据中读取一小部分作为一个训练batch。

mnist.train.xs训练集特征

mnist.train.ys训练集分类标签

软件版本


TensorFlow 1.0.1  +  Python 2.7.12

参考


①、Yann LeCun教授网站中对MNIST数据集的详细介绍及数据下载。

②、tensorflow官网对MNIST数据集的介绍及部分操作。

③、《TensorFlow实战Google深度学习框架》第五章。

使用Tensorflow操作MNIST数据相关推荐

  1. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  2. TensorFlow学习笔记(十四)TensorFLow 用mnist数据做classification

    之前的例子,给的都是tf来做regression,也就是回归问题,现在用tf来做一个classification的处理,也就是分类问题. 这里用的数据集是mnist数据. 代码: "&quo ...

  3. Tensorflow实现MNIST数据自编码(3)

    前面自编码(1)和自编码(2)是针对高维数据维数进行降低维数角度改进模型,但是还需要让这些特征具有抗干扰能力,输入的特征数据受到干扰时,生成特征依然不会怎么变化,使自动编码器具有更好的泛化能力 #en ...

  4. Tensorflow实现MNIST数据自编码(1)

    自编码网络能够自学习样本特征的网络,属于无监督学习模型的网络,可以从无标注的数据中学习特征,它可以给出比原始数据更好的特征描述,具有较强的特征学习能力. 主要的网络结构就是高维特征样本--->编 ...

  5. Tensorflow实现MNIST数据自编码(2)

    对自编码(1)进行改进,(1)中实现的网络是用2个编码层,2个解码层,现在对它进行添加编码层和解码层分别为4层 原始数据784-->256-->64-->16-->2 #enc ...

  6. Tensorflow实战之下载MNIST数据,自动分成train, validation和test三个数据集

    TensorFlow 实战Google深度学习框架 第2版 ,郑泽宇之P96.下载MNIST数据,自动分成train, validation和test三个数据集,源码如下: #!/usr/bin/en ...

  7. 机器学习入门案例简单理解——Tensorflow之MNIST解析

    深度学习简单介绍 首先要简单区别几个概念:人工智能,机器学习,深度学习,神经网络.这几个词应该是出现的最为频繁的,但是他们有什么区别呢? 人工智能:人类通过直觉可以解决的问题,如:自然语言理解,图像识 ...

  8. tensorflow saver_机器学习入门(6):Tensorflow项目Mnist手写数字识别-分析详解

    本文主要内容:Ubuntu下基于Tensorflow的Mnist手写数字识别的实现 训练数据和测试数据资料:http://yann.lecun.com/exdb/mnist/ 前面环境都搭建好了,直接 ...

  9. TensorFlow 深入MNIST

    原文地址:http://www.tensorfly.cn/tfdoc/tutorials/mnist_pros.html Table of Contents 安装 加载MNIST数据 运行Tensor ...

最新文章

  1. python dlib实现面部标志识别
  2. CF1398D Colored Rectangles (记忆化搜索DP)
  3. WISEGATE:SIEM的最佳实践讨论
  4. 给按钮、静态文本 CListCtrl等添加功能提示(tollTip)功能
  5. 抖音推荐机制与算法探讨
  6. 音频开发中常见的四个错误
  7. 20190403vim编辑器week1_day3
  8. linux脚本登录启动失败,linux-从bash脚本启动进程失败
  9. 用RAII技术管理资源及其泛型实现
  10. 秘密潜入2小辣椒_短暂潜入2次,我显然不知道自己作为开发人员正在做什么
  11. Linux网络协议栈:用eBPF写TCP拥塞控制算法
  12. Python 25 Django跨域请求
  13. 牛客国庆集训派对Day3: G. Stones(博弈+SG)
  14. ASP.NET基础教程-利用javascript将光标定位到文本框
  15. 根据经纬度查询数据mysql
  16. 好佳居软装十大品牌 软装可以提升格调
  17. 非功能性需求基础概念
  18. 一寸光阴一寸金,寸金难买寸光阴、时间就是生命,浪费时间就是慢性自杀。
  19. 网页视频倍速播放的方法
  20. 51 汇编语言编程--输入密码

热门文章

  1. python能够处理的最大整数是多少_python中能输出的最大整数位是多少
  2. 简单Android手机APP地图,android最简单手机地图APP(只需5分钟)
  3. 两位一体数码管引脚图_两位一体共阴数码管,第二位数字显示不出来,按钮第7按钮按下去来回显示,但第一位又不显示了,,,急...
  4. 计算机导论成绩分为几部分,计算机导论复习题(选择部分)汇总.docx
  5. 三星 android recovery,三星recovery模式怎么操作
  6. java 循环展开_Java在Debug的时候,有些变量能无限展开(循环了)?
  7. 10个数冒泡排序流程图_(立下flag)每日10道前端面试题01
  8. 基于ESP32的竞赛裁判系统功能调试-与微机通讯
  9. 第十五届全国大学生智能汽车竞赛青少年组获奖名单
  10. 操作canal,报错:Caused by: java.io.IOException: end of stream when reading header