mnist数据集下载(mnist)
你们好,最近小时发现有诸多的小伙伴们对于mnist数据集下载,mnist这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 MNIST数据集可以在官方网站获得,它包含四个部分:
2、 :train-images-idx 3-ubyte . gz(9.9 MB,解压后47 MB,包含60,000 个样本)
3、 :train-labels-idx 1-ubyte . gz(29kb,解压后60 KB,包含60,000 个标签)
4、 :t10k-images-idx3-ubyte.gz(1.6 MB,解压缩后为7.8 MB,包括10,000个样本)
5、 :t10k-labels-idx1-ubyte.gz(5kb,解压缩后为10 KB,包括10000个标签)
6、 MNIST的数据集来自国家标准和技术研究所(NIST)。训练集由250个不同人的手写数字组成,其中50%是高中生,50%来自人口普查局的工作人员。测试集也是相同比例的手写数字数据。
7、 你不妨新建一个文件夹-mnist,把数据集下载到mnist,解压:
8、 图片以字节存储,需要读入NumPy数组来训练和测试算法。
9、 import os
10、 import struct
11、 import numpy as np
12、 def load_mnist(path, kind='train'):
13、 '''Load MNIST data from `path`'''
14、 labels_path=os.path.join(path,
15、 '%s-labels-idx1-ubyte'
16、 % kind)
17、 images_path=os.path.join(path,
18、 '%s-images-idx3-ubyte'
19、 % kind)
20、 with open(labels_path, 'rb') as lbpath:
21、 magic, n=struct.unpack('II',
22、 lbpath.read(8))
23、 labels=np.fromfile(lbpath,
24、 dtype=np.uint8)
25、 with open(images_path, 'rb') as imgpath:
26、 magic, num, rows, cols=struct.unpack('IIII',
27、 imgpath.read(16))
28、 images=np.fromfile(imgpath,
29、 dtype=np.uint8).reshape(len(labels), 784)
30、 return images, labels
31、 load_mnist函数返回两个数组。第一个是具有n x m维的NumPy数组(图像),其中n是样本(行)的数量,m是特征(列)的数量。训练数据集包含60,000个样本,测试数据集包含10,000个样本。MNIST数据集中的每张图片由2828个像素组成,每个像素用一个灰度值表示。在这里,我们将28 x 28像素扩展为一维行向量,即图片数组中的行(每行有784个值,或者每行代表一张图片)。load_mnist函数返回的第二个数组。
32、 如果我们第一次见面,可能会觉得我们看图的方式有点奇怪:
33、 magic, n=struct.unpack('II', lbpath.read(8))
34、 labels=np.fromfile(lbpath, dtype=np.uint8)
35、 要理解这两行代码,我们先来看看MNIST网站上对数据集的介绍:
36、 TRAINING SET LABEL FILE (train-labels-idx1-ubyte):
37、 [offset] [type] [value] [description]
38、 0000 32 bit integer0x00000801(2049) magic number (MSB first)
39、 0004 32 bit integer 60000 number of items
40、 0008 unsigned byte ? label
41、 0009 unsigned byte ? label
42、 .
43、 xxxx unsigned byte ? label
44、 The labels values are 0 to 9.
45、 通过使用上面两行代码,在调用fromfile方法将字节读入NumPy数组之前,我们首先读入magic number,它是一个文件协议的描述和文件缓冲区中的项数(n)。II作为参数值传入struct.unpack有两部分:
46、 1.这里指的是大端(用来定义字节如何存储);如果你不知道什么是大终端,什么是小终端,Endianness就是一个非常好的解释。(有关大型和小型终端的更多信息,请参见了解计算机系统-第2.1节信息存储。)
47、 2.I:这是指一个无符号整数。
48、 通过执行下面的代码,我们将在提取MNIST数据集之后,从目录mnist中加载60,000个训练样本和10,000个测试样本。
49、 为了理解MNIST的图片是什么样子,让我们把它们形象化。将784像素值的矢量整形从特征矩阵改为之前的28*28的形状,然后通过matplotlib的imshow函数进行绘制:
50、 import matplotlib.pyplot as plt
51、 fig, ax=plt.subplots(
52、 nrows=2,
53、 ncols=5,
54、 sharex=True,
55、 sharey=True, )
56、 ax=ax.flatten()
57、 for i in range(10):
58、 img=X_train[y_train==i][0].reshape(28, 28)
59、 ax[i].imshow(img, cmap='Greys', interpolation='nearest')
60、 ax[0].set_xticks([])
61、 ax[0].set_yticks([])
62、 plt.tight_layout()
63、 plt.show()
64、 我们现在应该可以看到一个2*5 的图片, 里面分别是0-9 单个数字的图片.
65、 此外, 我们还可以绘制某一数字的多个样本图片, 来看一下这些手写样本到底有多不同:
66、 fig, ax=plt.subplots(
67、 nrows=5,
68、 ncols=5,
69、 sharex=True,
70、 sharey=True, )
71、 ax=ax.flatten()
72、 for i in range(25):
73、 img=X_train[y_train==7][i].reshape(28, 28)
74、 ax[i].imshow(img, cmap='Greys', interpolation='nearest')
75、 ax[0].set_xticks([])
76、 ax[0].set_yticks([])
77、 plt.tight_layout()
78、 plt.show()
79、 执行上面的代码后, 我们应该看到数字7 的25 个不同形态:
80、 另外, 我们也可以选择将MNIST 图片数据和标签保存为CSV 文件, 这样就可以在不支持特殊的字节格式的程序中打开数据集. 但是, 有一点要说明, CSV 的文件格式将会占用更多的磁盘空间, 如下所示:
81、 train_img.csv: 109.5 MB
82、 train_labels.csv: 120 KB
83、 test_img.csv: 18.3 MB
84、 test_labels: 20 KB
85、 如果我们打算保存这些CSV 文件, 在将MNIST 数据集加载入NumPy array 以后, 我们应该执行下列代码:
86、 np.savetxt('train_img.csv', X_train,
87、 fmt='%i', delimiter=',')
88、 np.savetxt('train_labels.csv', y_train,
89、 fmt='%i', delimiter=',')
90、 np.savetxt('test_img.csv', X_test,
91、 fmt='%i', delimiter=',')
92、 np.savetxt('test_labels.csv', y_test,
93、 fmt='%i', delimiter=',')
94、 一旦将数据集保存为CSV 文件, 我们也可以用NumPy 的genfromtxt函数重新将它们加载入程序中:
95、 X_train=np.genfromtxt('train_img.csv',
96、 dtype=int, delimiter=',')
97、 y_train=np.genfromtxt('train_labels.csv',
98、 dtype=int, delimiter=',')
99、 X_test=np.genfromtxt('test_img.csv',
100、 dtype=int, delimiter=',')
101、 y_test=np.genfromtxt('test_labels.csv',
102、 dtype=int, delimiter=',')
103、 不过, 从CSV 文件中加载MNIST 数据将会显著发给更长的时间, 因此如果可能的话, 还是建议你维持数据集原有的字节格式.
以上就是mnist这篇文章的一些介绍,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
宝子们,杭州 房子装修完成啦!这次要给大家分享几家设计超赞的装修公司哦。它们各具特色,从空间规划到风格...浏览全文>>
-
欲筑室者,先治其基。在上海,装修房子对于每个业主而言,都是极为关键的一步,然而,如何挑选一家值得信赖的...浏览全文>>
-
2025年以来,联通支付严格贯彻落实国家战略部署,以数字和科技为驱动,做好金融五篇大文章,履行支付为民社会...浏览全文>>
-
良工巧匠,方能筑就华居;精雕细琢,方可打造美家。当我们谈论装修公司时,选择一家靠谱可靠的公司是至关重要...浏览全文>>
-
在当今社会,随着城市化进程的高速推进,建筑垃圾的产生量与日俱增。据权威数据显示,我国每年建筑垃圾产生量超 ...浏览全文>>
-
家人们,在上海要装修,选对公司那可太重要了!古语有云:"安得广厦千万间,大庇天下寒士俱欢颜。"一个温馨的...浏览全文>>
-
近年来,新能源汽车市场发展迅猛,各大品牌纷纷推出各具特色的车型以满足消费者多样化的需求。作为国内新能源...浏览全文>>
-
近年来,随着汽车市场的不断变化和消费者需求的升级,安徽滁州地区的宝来2025新款车型在市场上引起了广泛关注...浏览全文>>
-
随着汽车市场的不断变化,滁州地区的消费者对高尔夫车型的关注度持续上升。作为大众品牌旗下的经典车型,高尔...浏览全文>>
-
在2023年,大众探影以其时尚的设计和出色的性能赢得了众多消费者的青睐。作为一款小型SUV,探影凭借其紧凑的车...浏览全文>>
- 安徽滁州途安L新车报价2022款,最低售价16.68万起,入手正当时
- 小鹏G7试驾,新手必知的详细步骤
- 别克GL8预约试驾,4S店的贴心服务与流程
- 安徽阜阳ID.4 CROZZ落地价全解,买车必看的省钱秘籍
- 淮北探岳多少钱 2025款落地价,最低售价17.69万起现在该入手吗?
- 安徽淮南大众CC新款价格2025款多少钱能落地?
- 淮北长安启源C798价格,最低售价12.98万起现在该入手吗?
- 安徽淮南途锐价格,各配置车型售价全解析
- 蒙迪欧试驾预约,4S店体验全攻略
- 沃尔沃XC40试驾需要注意什么
- 滁州ID.4 X新车报价2025款,各车型售价大公开,性价比爆棚
- 试驾思域,快速操作,轻松体验驾驶乐趣
- 试驾长安CS35PLUS,一键搞定,开启豪华驾驶之旅
- 天津滨海ID.6 X落地价限时特惠,最低售价25.9888万起,错过不再有
- 天津滨海凌渡多少钱?看完这篇购车攻略再做决定
- 安徽池州长安猎手K50落地价,买车前的全方位指南
- 山东济南ID.6 CROZZ 2024新款价格,最低售价19.59万起,现车充足
- 试驾海狮05EV,新手必知的详细步骤
- 生活家PHEV多少钱 2025款落地价走势,近一个月最低售价63.98万起,性价比凸显
- 奇瑞风云A9试驾,新手必知的详细步骤