资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Python

MNIST数据集下载+idx3-ubyte解析【超详细+上手简单】

Python 更新时间: 发布时间: 计算机考试归档 最新发布

MNIST数据集下载+idx3-ubyte解析【超详细+上手简单】

前言

训练模型的时候经常会使用MNIST数据集来训练模型,那么如何获取到MNIST数据集呢?博主经过实践后,总结了经验,希望能帮助到屏幕前的你使用MNIST数据集。

目录

前言

1 下载MNIST数据集文件

2 解析idx3-ubyte文件

2.1 解析训练集

2.2解析测试集

3.运行py文件


1 下载MNIST数据集文件

由于MNIST数据集是在外网发布,下载比较慢,博主把MNIST放在了百度网盘中

链接:https://pan.baidu.com/s/1V-4FOePbTyBG7qZ7ge_TqQ?pwd=dw2i 
提取码:dw2i

下载到本地后,把gz后缀压缩包进行解压缩

其中包含4个文件,详细介绍如下表所示:

 

 图表来源转自:MNIST数据集_保持理智802的博客-CSDN博客_mnist数据集

2 解析idx3-ubyte文件

接下来我们要把idx3-ubyte文件转换成图片形式

分别转换训练集和测试集,博主使用的是pycharm

2.1 解析训练集

train-images.idx3-ubyte和train-labels.idx1-ubyte分别是训练集的图片和标签,其中数据/标签文件位置需要进行修改成你本地训练集保存的位置。

 

 

import numpy as npimport structfrom PIL import Imageimport osdata_file = r'D:postgraduateDUTtpdsmalicious_nodeMNIST_datatrain-images.idx3-ubyte'# It's 47040016B, but we should set to 47040000Bdata_file_size = 47040016data_file_size = str(data_file_size - 16) + 'B'data_buf = open(data_file, 'rb').read()magic, numImages, numRows, numColumns = struct.unpack_from(    '>IIII', data_buf, 0)datas = struct.unpack_from(    '>' + data_file_size, data_buf, struct.calcsize('>IIII'))datas = np.array(datas).astype(np.uint8).reshape(    numImages, 1, numRows, numColumns)label_file = r'D:postgraduateDUTtpdsmalicious_nodeMNIST_datatrain-labels.idx1-ubyte'# It's 60008B, but we should set to 60000Blabel_file_size = 60008label_file_size = str(label_file_size - 8) + 'B'label_buf = open(label_file, 'rb').read()magic, numLabels = struct.unpack_from('>II', label_buf, 0)labels = struct.unpack_from(    '>' + label_file_size, label_buf, struct.calcsize('>II'))labels = np.array(labels).astype(np.int64)datas_root = 'mnist_train'if not os.path.exists(datas_root):    os.mkdir(datas_root)for i in range(10):    file_name = datas_root + os.sep + str(i)    if not os.path.exists(file_name):        os.mkdir(file_name)for ii in range(numLabels):    img = Image.fromarray(datas[ii, 0, 0:28, 0:28])    label = labels[ii]    file_name = datas_root + os.sep + str(label) + os.sep +                 'mnist_train_' + str(ii) + '.png'    img.save(file_name)

2.2解析测试集

t10k-labels.idx3-ubyte和t10k-labels.idx1-ubyte分别是测试集的图片和标签,其中数据/标签文件位置需要进行修改成你本地测试集保存的位置。

 

 

import numpy as npimport structfrom PIL import Imageimport osdata_file = r'D:postgraduateDUTtpdsmalicious_nodeMNIST_datat10k-images.idx3-ubyte'# It's 7840016B, but we should set to 7840000Bdata_file_size = 7840016data_file_size = str(data_file_size - 16) + 'B'data_buf = open(data_file, 'rb').read()magic, numImages, numRows, numColumns = struct.unpack_from(    '>IIII', data_buf, 0)datas = struct.unpack_from(    '>' + data_file_size, data_buf, struct.calcsize('>IIII'))datas = np.array(datas).astype(np.uint8).reshape(    numImages, 1, numRows, numColumns)label_file = r'D:postgraduateDUTtpdsmalicious_nodeMNIST_datat10k-labels.idx1-ubyte'# It's 10008B, but we should set to 10000Blabel_file_size = 10008label_file_size = str(label_file_size - 8) + 'B'label_buf = open(label_file, 'rb').read()magic, numLabels = struct.unpack_from('>II', label_buf, 0)labels = struct.unpack_from(    '>' + label_file_size, label_buf, struct.calcsize('>II'))labels = np.array(labels).astype(np.int64)datas_root = 'mnist_test'if not os.path.exists(datas_root):    os.mkdir(datas_root)for i in range(10):    file_name = datas_root + os.sep + str(i)    if not os.path.exists(file_name):        os.mkdir(file_name)for ii in range(numLabels):    img = Image.fromarray(datas[ii, 0, 0:28, 0:28])    label = labels[ii]    file_name = datas_root + os.sep + str(label) + os.sep +                 'mnist_test_' + str(ii) + '.png'    img.save(file_name)

3.运行py文件

运行上述两个py文件后,会在项目的根目录下分别生成两个文件夹:

 

其中,mnist_train有6w个图片,minst_test有1w个图片。

 

 

大功告成,接下来就可以开始训练模型啦!!!

 

 

 

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1098108.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【MNIST数据集下载+idx3-ubyte解析【超详细+上手简单】】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2