首页IT科技mnist数据集百度百科(MNIST数据集下载+idx3-ubyte解析【超详细+上手简单】)

mnist数据集百度百科(MNIST数据集下载+idx3-ubyte解析【超详细+上手简单】)

时间2025-06-15 03:37:58分类IT科技浏览10554
导读:前言 训练模型的时候经常会使用MNIST数据集来训练模型,那么如何获取到MNIST数据集呢?博主经过实践后,总结了经验,希望能帮助到屏幕前的你使用MNIST数据集。...

前言

训练模型的时候经常会使用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 np import struct from PIL import Image import os data_file = rD:\postgraduate\DUT\tpds\malicious_node\MNIST_data\train-images.idx3-ubyte # Its 47040016B, but we should set to 47040000B data_file_size = 47040016 data_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 = rD:\postgraduate\DUT\tpds\malicious_node\MNIST_data\train-labels.idx1-ubyte # Its 60008B, but we should set to 60000B label_file_size = 60008 label_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 np import struct from PIL import Image import os data_file = rD:\postgraduate\DUT\tpds\malicious_node\MNIST_data\t10k-images.idx3-ubyte # Its 7840016B, but we should set to 7840000B data_file_size = 7840016 data_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 = rD:\postgraduate\DUT\tpds\malicious_node\MNIST_data\t10k-labels.idx1-ubyte # Its 10008B, but we should set to 10000B label_file_size = 10008 label_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个图片         。

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

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
为什么win10玩cf特别卡(win10玩cf卡顿解决方法) html css图片轮播代码(文字轮播与图片轮播?CSS 不在话下)