1.MNIST(简介可视化)
1.简介
MNIST 数据集来自美国国家标准与技术研究所, 是NIST(National Institute of Standards and Technology)的缩小版,训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the Census Bureau) 的工作人员,测试集(test set) 也是同样比例的手写数字数据.
MNIST 数据集可在 http://yann.lecun.com/exdb/mnist/ 获取, 图片是以字节的形式进行存储,它包含了四个部分:
- Training set images: train-images-idx3-ubyte.gz (9.9 MB, 解压后 47 MB, 包含 60,000 个样本)
- Training set labels: train-labels-idx1-ubyte.gz (29 KB, 解压后 60 KB, 包含 60,000 个标签)
- Test set images: t10k-images-idx3-ubyte.gz (1.6 MB, 解压后 7.8 MB, 包含 10,000 个样本)
- Test set labels: t10k-labels-idx1-ubyte.gz (5KB, 解压后 10 KB, 包含 10,000 个标签)
此数据集中,训练样本:共60000个,其中55000个用于训练,另外5000个用于验证。测试样本:共10000个,验证数据比例相同。
数据集中像素值
a)使用python读取二进制文件方法读取mnist数据集,则读进来的图像像素值为0-255之间;标签是0-9的数值。
b)采用TensorFlow的封装的函数读取mnist,则读进来的图像像素值为0-1之间;标签是0-1值组成的大小为1*10的行向量。
2.读取mnist到numpy
load_mnist 函数返回两个数组, 第一个是一个 n x m 维的 NumPy array(images), 这里的 n 是样本数(行数), m 是特征数(列数). 训练数据集包含 60,000 个样本, 测试数据集包含 10,000 样本.
在 MNIST 数据集中的每张图片由 28 x 28 个像素点构成, 每个像素点用一个灰度值表示. 在这里, 我们将 28 x 28 的像素展开为一个一维的行向量, 这些行向量就是图片数组里的行(每行 784 个值, 或者说每行就是代表了一张图片).
load_mnist 函数返回的第二个数组(labels) 包含了相应的目标变量, 也就是手写数字的类标签(整数 0-9).
import os
import struct
import numpy as npdef 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是一个文件协议的描述,也是调用fromfile 方法将字节读入NumPy的array之前在文件缓冲中的item数(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
1.
>这是指大端(用来定义字节是如何存储的,关于大小端, 更多内容可见<<深入理解计算机系统 – 2.1 节信息存储>>)
2.
I: 这是指一个无符号整数.
3.查看tensorflow集成的mnist
from tensorflow.examples.tutorials.mnist import input_dataminit = input_data.read_data_sets("../MNIST_data")
#如果该路径没有会自动下载print("Training data size",minit.train.num_examples)
#训练数据print("Training data size",minit.validatation.num_examples)
#验证数据print("Training data size",minit.test.num_examples)
#测试数据print("Example training data size",minit.train.image[0])
#样例训练数据print(“Example training data label”,minist.train.labels[0])
#样例训练数据标签 batch_size = 100
x,y = mnist.train.next_batch(batch_size)
print('x shape:',x.shape)
print('y shape:',y.shape)
4.可视化
4.1 plt的方法
从 feature matrix 中将 784-像素值 的向量 reshape 为之前的 28*28 的形状, 然后通过 matplotlib 的 imshow 函数进行绘制,不能进行one-hot编码:
- 读单个图片
import matplotlib.pyplot as plt#from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets
#mnist = read_data_sets('MNIST_data', one_hot=False)from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("./MNIST_data",one_hot=False)
x, y = mnist.test.next_batch(1)
x = x.reshape([28, 28])fig = plt.figure()
# Method1
ax1 = fig.add_subplot(221)
ax1.imshow(x, cmap=plt.cm.gray)# Method2: 反转色
ax2 = fig.add_subplot(222)
ax2.imshow(x, cmap=plt.cm.gray_r) # r表示reverse# Method3(等价于Method1)
ax3 = fig.add_subplot(223)
ax3.imshow(x, cmap='gray')# Method4(等价于Method2)
ax4 = fig.add_subplot(224)
ax4.imshow(x, cmap='gray_r')plt.show()
- 读多个图片
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("./MNIST_data",one_hot=False)fig, ax_big = plt.subplots()for i in range(100): #读一百张x,y = mnist.test.next_batch(1)x = x.reshape([28,28])ax = fig.add_subplot(10,10,i+1) #10行10列ax.imshow(x, cmap=plt.cm.gray)ax.set_xticks([]) ax.set_yticks([])#隐藏子图坐标轴刻度ax_big.set_xticks([])
# 隐藏坐标轴刻度
ax_big.set_yticks([])plt.show()
#plt.savefig("路径.png", dpi=150)
4.2 torchvision&scipy方法
其实数据集里的图片就是一个带有像素值的二维数组,可以画出这个数组的库有很多。机器学习库torch,的torchvision也可以。具体方法如下:
import torchvision
import torch.utils.data as Data
import scipy.misc
import osDOWNLOAD_MNIST = True train_data = torchvision.datasets.MNIST(root='./MNIST_data2/',train=True,transform=torchvision.transforms.ToTensor(),download=DOWNLOAD_MNIST)#把原始图片保存至MNIST_data/raw/下
save_dir="mnist/raw/"
if os.path.exists(save_dir) is False:os.makedirs(save_dir)for i in range(20):image_array,_=train_data[i]#打印第i个image_array=image_array.resize(28,28)filename=save_dir + 'mnist_train_%d.jpg' % i#保存文件的格式print(filename)print(train_data.train_labels[i])#打印出标签scipy.misc.toimage(image_array,cmin=0.0,cmax=1.0).save(filename)#保存图像
结果输出如下:
1.MNIST(简介可视化)相关推荐
- MNIST数据可视化
代码 import numpy as np import struct from scipy.misc import imsave from PIL import Image''' mnist数据格式 ...
- cifar10和cifar100(简介可视化)
cifar CIFAR数据集是 Visual Dictionary (Teaching computers to recognize objects) 的子集,由三个教授收集,主要来自google和各 ...
- CVPR2021 | 视觉 Transformer 的可视化
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 报道丨极市平台 近两年,"Transformer" ...
- 基于tensorflow的MNIST手写字识别
一.卷积神经网络模型知识要点卷积卷积 1.卷积 2.池化 3.全连接 4.梯度下降法 5.softmax 本次就是用最简单的方法给大家讲解这些概念,因为具体的各种论文网上都有,连推导都有,所以本文主要 ...
- 【AI白身境】深度学习中的数据可视化
文章首发于微信公众号<有三AI> [AI白身境]深度学习中的数据可视化 今天是新专栏<AI白身境>的第八篇,所谓白身,就是什么都不会,还没有进入角色. 上一节我们已经讲述了如何 ...
- 【AI白身境】深度学习中的数据可视化
今天是新专栏<AI白身境>的第八篇,所谓白身,就是什么都不会,还没有进入角色. 上一节我们已经讲述了如何用爬虫爬取数据,那爬取完数据之后就应该是进行处理了,一个很常用的手段是数据可视化. ...
- 对pca降维后的手写体数字图片数据分类_【AI白身境】深度学习中的数据可视化...
今天是新专栏<AI白身境>的第八篇,所谓白身,就是什么都不会,还没有进入角色. 上一节我们已经讲述了如何用爬虫爬取数据,那爬取完数据之后就应该是进行处理了,一个很常用的手段是数据可视化. ...
- 丽水数据可视化设计价格_B端产品设计数据可视化图表选择篇
本文一共6040文字,阅读大概需要15分钟 近期在做直播后台内容数字化渠道升级 ,其中有个工作是需要把大量的数据表格转换成为可视化图表,接到需求一脸懵的我,冒出几个问题 1.什么是数据可视化? 2.数 ...
- 知识图谱可视化技术在美团的实践与探索
省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 [免费下载]2022年3月份热门报告盘点 某短视频APP推荐算法及策略最详细拆解 大萧条来临前的几大征兆 机器学 ...
最新文章
- Oracle逻辑结构学习笔记
- 当系统扩展遇到违背OO的里氏原则(LSP)的时候怎么办 ?
- 2.11 while循环的嵌套以及应用(难)
- magento问题集
- linux 装完yum不能用,解决yum不能正常使用的问题
- 关于被忽略的转置矩阵的公式
- 高通“扶”大唐 狙击低端芯片玩家
- seo查询系统php源码,2020版SEO计费系统的源码
- Subclipse与Subversive比较
- 技嘉linux支持的主板型号,详细解读主板厂商命名规则——技嘉篇
- 47 jquery 计时器 选择器 筛选器 左边菜单栏
- 2022年湖南省初级审计师考试模拟题及答案
- snipaste如何滚动截图_3款工具满足你对截图软件的所有想象
- 检测不到声卡High Definition Audio控制器显示代码10?驱动人生教你如何解决问题
- javaweb笔记(方立勋)
- 生成式模型(VAE+GAN)
- Android 使用FFmpeg3.3.9基于命令实现视频压缩
- 杭州海赢科技分享速卖通绑定欧盟责任人流程及相关FAQ
- 图像矫正:桶形畸变矫正的原理及python简易实现与加速
- Abaqus中C3D8R单元和C3D8I单元的区别