【深度学习】Fashion-MNIST数据集简介
文章目录
- 数据集简介
- 操作
- 下载数据集
- 数据格式
- 可视化显示
- 读取小批量
- 完整代码
- 备注
数据集简介
不同于MNIST手写数据集,Fashion-MNIST数据集包含了10个类别的图像,分别是:t-shirt(T恤),trouser(牛仔裤),pullover(套衫),dress(裙子),coat(外套),sandal(凉鞋),shirt(衬衫),sneaker(运动鞋),bag(包),ankle boot(短靴)。
操作
下载数据集
这里通过mxnet中gluon的data包来下载这个数据集,第一次调用时将自动从网上下载获取数据。默认的保存位置为:C:\Users\Username\.mxnet\datasets\fashion-mnist\
目录(Linux系统估计也在主目录下的类似目录中),共包含四个文件,分别为:
- 训练数据图片
train-images-idx3-ubyte
- 训练数据标签
train-labels-idx1-ubyte
- 测试数据图片
t10k-images-idx3-ubyte
- 测试数据标签
t10k-labels-idx1-ubyte
因为是国外的网站,没有代理的话下载速度很慢,所以可以通过手动下载并并将其移动至上述目录:
- 点击程序运行时控制台消息给出的链接进行下载;
- 点击下载我上传至CSDN的副本(CSDN资源至少需要1积分,没办法啦各位筒子)。
train
指定获取训练数据集还是测试数据集。
from mxnet.gluon import data as gdata# 通过gluon的data包下载数据集
mnist_train = gdata.vision.FashionMNIST(train=True)
mnist_test = gdata.vision.FashionMNIST(train=False)
查阅mxnet的官方文档,可以看到vision
中预定义了以下几种数据集:
数据格式
训练数据集每个类别含有6000个样本,测试数据集每个类别含有1000个样本,一共有10个类别,故而训练数据集共60000个样本,测试数据集共10000个样本。
图像是一个28*28
的像素数组,每个像素的值为0~255之间的8位无符号整数(uint8),使用三维NDArray存储,最后一维表示通道个数。由于为灰度图像,故通道数为1。
# 10个类别,训练集和测试集每个类别分别6000样本和1000样本
print(len(mnist_train), len(mnist_test))
# 数据集形状
feature, lable = mnist_train[0]
print(feature.shape, feature.dtype)
print(lable, lable.dtype)
运行结果如下:
可视化显示
首先定义一个函数,根据数值标签获取字符串标签:
# 将数据集的数值标签转换为文本标签, 参数是一个list
def get_fasion_mnist_labels(labels):text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat', 'sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']return [text_labels[int(i)] for i in labels]
定义函数,在一行中绘制数据代表的可视化结果:
import gluonbook as gb
import pylab# 同一行画出图片和标签
def show_fashion_mnist(images, labels):gb.use_svg_display()# _表示忽略不使用的变量_, figs = gb.plt.subplots(1, len(images), figsize=(12, 12))for f, img, lbl in zip(figs, images, labels):f.imshow(img.reshape((28, 28)).asnumpy())f.set_title(lbl)f.axes.get_xaxis().set_visible(False)f.axes.get_xaxis().set_visible(False)pylab.show() # PyCharm 2018中绘图# 画图示例
X, y = mnist_train[0:9]
show_fashion_mnist(X, get_fasion_mnist_labels(y))
结果如下:
读取小批量
使用gluon中的DataLoader来读取数据,它可以允许使用多进程来加速数据的读取(windows暂时不支持)。下面通过num_workers
设置读取数据的进程数。
ToTensor
类将图像数据从uint8转换为32位浮点数格式,并且除以255使得所有的像素值分布于[0,1]。ToTensor
类还将图像通道从最后一维移到最前面一维上来,这将方便在卷积神经网络中进行计算。通过数据集的transform_first
函数,我们将ToTensor
的变换应用在每个数据样本(图像和标签)的第一个元素,即图像之上。
import sys
import time# 读取小批量数据
batch_size = 256
transformer = gdata.vision.transforms.ToTensor()
if sys.platform.startswith('win'):# 0表示不使用额外的进程读取数据num_workers = 0
else:num_workers = 4
train_iter = gdata.DataLoader(mnist_train.transform_first(transformer), batch_size, shuffle=True, num_workers=num_workers)
test_iter = gdata.DataLoader(mnist_test.transform_first(transformer), batch_size, shuffle=False, num_workers=num_workers)start = time.time()
for X, y in train_iter:continue
print('%.2f sec' % (time.time() - start))
我电脑上的数据读取时间:
改变batch_size
的值,看看数据的读取性能会有何影响?
完整代码
# coding=utf-8
# author: BebDong
# 2018/12/18from mxnet.gluon import data as gdata
import gluonbook as gb
import pylab
import sys
import time# 将数据集的数值标签转换为文本标签
def get_fasion_mnist_labels(labels):text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat', 'sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']return [text_labels[int(i)] for i in labels]# 同一行画出图片和标签
def show_fashion_mnist(images, labels):gb.use_svg_display()# _表示忽略不使用的变量_, figs = gb.plt.subplots(1, len(images), figsize=(12, 12))for f, img, lbl in zip(figs, images, labels):f.imshow(img.reshape((28, 28)).asnumpy())f.set_title(lbl)f.axes.get_xaxis().set_visible(False)f.axes.get_xaxis().set_visible(False)pylab.show()# 通过gluon的data包下载数据集
mnist_train = gdata.vision.FashionMNIST(train=True)
mnist_test = gdata.vision.FashionMNIST(train=False)# 10个类别,训练集和测试集每个类别分别6000样本和1000样本
print(len(mnist_train), len(mnist_test))
# 数据集形状
feature, lable = mnist_train[0]
print(feature.shape, feature.dtype)
print(lable, lable.dtype)
print(get_fasion_mnist_labels([lable]))# 画图示例
X, y = mnist_train[0:9]
# show_fashion_mnist(X, get_fasion_mnist_labels(y))# 读取小批量数据
batch_size = 256
transformer = gdata.vision.transforms.ToTensor()
if sys.platform.startswith('win'):# 0表示不使用额外的进程读取数据num_workers = 0
else:num_workers = 4
train_iter = gdata.DataLoader(mnist_train.transform_first(transformer), batch_size, shuffle=True, num_workers=num_workers)
test_iter = gdata.DataLoader(mnist_test.transform_first(transformer), batch_size, shuffle=False, num_workers=num_workers)start = time.time()
for X, y in train_iter:continue
print('%.2f sec' % (time.time() - start))
备注
本文为《动手学深度学习》的学习笔记,原书链接:http://zh.diveintodeeplearning.org/chapter_deep-learning-basics/fashion-mnist.html
代码中的gluonbook
包是这本书籍封装的工具包,它把书中描述的将来会复用的所有方法进行了封装。如果您并未按照书中给出的配置文件搭建环境,那可以点击这里单独下载gluonbook包,并将其移动至恰当的位置。
【深度学习】Fashion-MNIST数据集简介相关推荐
- 从手写数字识别入门深度学习丨MNIST数据集详解
就像无数人从敲下"Hello World"开始代码之旅一样,许多研究员从"MNIST数据集"开启了人工智能的探索之路. MNIST数据集(Mixed Natio ...
- Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介、应用之详细攻略——daidingdaiding
Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介.应用之详细攻略--daidingdaiding 目录 箱线图 箱线图 箱线图(box plots):这些图显示 ...
- DL框架之Tensorflow:深度学习框架Tensorflow的简介、安装、使用方法之详细攻略
DL框架之Tensorflow:深度学习框架Tensorflow的简介.安装.使用方法之详细攻略 目录 Tensorflow的简介 1.描述 2.TensorFlow的六大特征 3.了解Tensorf ...
- fashionmnist数据集_Keras实现Fashion MNIST数据集分类
本篇用keras构建人工神经网路(ANN)和卷积神经网络(CNN)实现Fashion MNIST 数据集单个物品分类,并从模型预测的准确性方面对ANN和CNN进行简单比较. Fashion MNIST ...
- 【神经网络与深度学习】CIFAR10数据集介绍,并使用卷积神经网络训练图像分类模型——[附完整训练代码]
[神经网络与深度学习]CIFAR-10数据集介绍,并使用卷积神经网络训练模型--[附完整代码] 一.CIFAR-10数据集介绍 1.1 CIFAR-10数据集的内容 1.2 CIFAR-10数据集的结 ...
- 转载【数据集】计算机视觉,深度学习,数据挖掘数据集整理
金融 美国劳工部统计局官方发布数据 上证A股日线数据,1999.12.09 至 2016.06.08,前复权,1095支股票 深证A股日线数据,1999.12.09 至 2016.06.08,前复权, ...
- 深度学习常用的数据集,包括各种数据跟图像数据。
1. 免费数据集下载(持续更新中...) 2.[导读] "大数据时代",数据为王!无论是数据挖掘还是目前大热的深度学习领域都离不开"大数据".大公司们一般会 ...
- 数据集大全:25个深度学习的开放数据集
介绍 深度学习的关键是训练.无论是从图像处理到语音识别,每个问题都有其独特的细微差别和方法. 但是,你可以从哪里获得这些数据?现在你看到的很多研究论文都使用专有数据集,而这些数据集通常不会向公众发布. ...
- 二十五个深度学习相关公开数据集
转 [干货]二十五个深度学习相关公开数据集 2018年04月18日 13:42:53 阅读数:758 (选自Analytics Vidhya:作者:Pranav Dar:磐石编译) 目录 介绍 图像处 ...
最新文章
- 开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务
- 单片机基础课程有哪些?
- 文件读取getline与fscanf_s
- python oracle数据库操作_Python连接oracle数据库的基本操作
- 为什么 wait/notify/notifyAll 在 Object 类定义而不是 Thread 类?
- 【chromium】 Chromium OS的oom机制
- 计算机键盘标注,你所不知道的 Windows 10 小诀窍:万能计算器、虚拟键盘、屏幕截图标注...
- 什么是CDP(连续数据保护)?
- django-多对多关系
- 中小学、幼儿园校园明厨亮灶视频监控平台要求
- Mate 50系列首发?曝鸿蒙3.0用户版5月内测
- Bug--Tomcat Error start child
- UE4之SetRelativeLocation 和SetRelativeRotation
- php有的图片显示不出来,图片显示不出来,但是数据库里有显示
- 模电——硬件选择电容的耐压值以及分类和其优缺点
- 《编码:隐匿在计算机软硬件背后的语言》读书笔记整理总结
- 关于Wincc 7.0 sp1 亚洲版的下载链接地址及授权,破解
- 大数据时代网络安全问题分析
- c# .net对接企业微信小助手 接口请求时长预警
- IDEA中Artifact的配置
热门文章
- 我的世界学园都市java_我的世界学园都市地图整合包
- mongodb-报错FailedToParse: Password must be URL Encoded for mongodb:// URL:
- C++ sort函数(升序降序排列)
- 网易我的世界服务器配置文件翻译,精致存储的配置文件翻译 - [RS]精致存储 (Refined Storage) - MC百科|最大的Minecraft中文MOD百科...
- C++中模板的特化与偏特化
- putc与stdin,stdout,stderr
- 【随笔记】NDK 编译开源库 SQLite3
- 我的python世界 豆瓣_python系列之(4)豆瓣图书《平凡的世界》书评及情感分析...
- Arthas——热替换
- 图灵学院Java架构师课程,基于java