mnist database(手写字符识别) 的数据集下载地:http://yann.lecun.com/exdb/mnist/。

共有四个文件需要下载:

train-images-idx3-ubyte.gz,训练集,共 60,000 幅(28*28)的图像数据;

train-labels-idx1-ubyte.gz,训练集的标签信息(取值为 0-9),60,000*1

t10k-images-idx3-ubyte.gz,测试集(t: test, 10k: 10,000),共 10,000 副(28*28)的图像数据

t10k-labels-idx1-ubyte.gz,测试集的标签呢信息(取值为 0-9),10,000*1

文件名中的 ubyte 表示数据类型,无符号的单字节类型,对应于 matlab 中的 uchar 数据类型。

注:在 Windows 平台下解压这些文件时,操作系统会自动修改这些文件的文件名,比如会将倒数第二个短线-修改为.,也即 train-images-idx3-ubyte.gz 解压为train-images.idx3-ubyte(文件类型就自作主张地变成了idx3-ubyte),注意文件的对应。

f = fopen('./dataset/t10k-images-idx3-ubyte', 'r')

assert(f >= 3, '文件打开失败'); % 一般文件的文件标识符必须大于等于3

g = fopen('./dataset/t10k-labels-idx1-ubyte', 'r');

assert(g >= 3, '文件打开失败');

我们再来看 mnist 数据集官网给出的关于这四个文件格式的说明:

也即在真正的 label 数据或图像像素信息开始之前会有一些表头信息,对于 label 文件是 2 个 32位整型,对于 image 文件是 4 个 32位整型,所以我们需要对这两个文件分别移动文件指针,以指向正确的位置。

fread(f, 4, 'int32');

fread(g, 2, 'int32');

按 label 分不同的文件,就原始数据组织成 .ascii 文件

% 首先创建这些 .ascii 文件

fids = zeros(1, 10);

for i = 0:9,

fids(i+1) = fopen(['test' num2str(i) '.ascii'], 'w');

end

因为文件内容比较大,出于内存的考虑,最好不要一次全部读入内存,而是逐块逐块地读取,比如一次读 1000 个图像信息,

n = 1000;

times = 60; % 60*1000 = 60,000

for i = 1:times,

rawimages = fread(f, [28*28, n], 'uchar');

rawlabels = fread(g, n, 'uchar');

for j = 1:n,

fprintf(fids(rawlabels(j)+1), '%3d ', rawimages(:, j));

fprintf(fids(rawlabels(j)+1), '\n');

end

end

最后再将 .ascii 格式文件保存为 .mat 文件,

for c = 0:9,

D = load(['test' num2str(c) '.ascii'], '-ascii');

fprintf('%5d digits of class %1d', size(D, 1), c);

save(['train' num2str(c) '.mat'], 'D', '-mat');

fclose(fids(c+1));

end

别忘了删除无用的 .ascii 格式文件:

dos('del *.ascii'); % Windows 平台下dos 命令

% Linux 平台下:dos('rm *.ascii');

matlab解析mnist,matlab 解析 mnist 数据集相关推荐

  1. MNIST手写字体数据集解析

    1 MNIST数据集 1.0 简介 按国家标准修订技术数据集(Modified National Institute of Standards and Technology database, MNI ...

  2. Matlab中的参数解析

    本文中,我们讨论如何在Matlab中进行参数解析. 参数解析对于软件开发和程序设计至关重要.在Matlab中,函数参数传递一般采用直接传值方式,最复杂的情况下也就是使用varargin变长数组.那么如 ...

  3. Matlab的filtfilt函数解析与C++实现

    Matlab的filtfilt函数解析与C++实现 0.前言 1.filtfilt函数的解析 1.1 主要流程 1.2 边界的延拓 1.3 边界效应的优化 1.4 滤波器系数获取 2.C++实现及对比 ...

  4. MATLAB plot绘图参数解析

    功能 二维曲线绘图 语法 1 2 3 4 5 6 7 plot(Y) plot(X1,Y1,...) plot(X1,Y1,LineSpec,...) plot(...,'PropertyName', ...

  5. matlab 参数优化函数,MATLAB优化函数fmincon解析

    MATLAB,优化函数fmincon解析 [x,fval,exitflag,output,lambda,grad,hessian]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,n ...

  6. 将MNIST手写数字数据集导入NumPy数组(《深度学习入门:基于Python的理论与实现》实践笔记)

    将MNIST手写数字数据集导入NumPy数组(<深度学习入门:基于Python的理论与实现>实践笔记) 一.下载MNIST数据集(使用urllib.request.urlretrieve( ...

  7. MNIST及FASHION MNIST 数据读取

    概要 代码 结果展示 概要 mnist 数据集链接:http://yann.lecun.com/exdb/mnist/ fashion_mnist:https://github.com/zalando ...

  8. 哈尔滨理工大学matlab,微软用户-Matlab软件简介哈尔滨理工大学数学建模组ppt课件...

    <微软用户-Matlab软件简介哈尔滨理工大学数学建模组ppt课件>由会员分享,可在线阅读,更多相关<微软用户-Matlab软件简介哈尔滨理工大学数学建模组ppt课件(41页珍藏版) ...

  9. 聚类分析matlab检验,「matlab聚类分析」聚类分析的Matlab 程序—系统聚类(附有案例分析) - 金橙教程网...

    matlab聚类分析 聚类分析的Matlab 程序-系统聚类 (1)计算数据集每对元素之间的距离,对应函数为pdistw. 调用格式:Y=pdist(X),Y=pdist(X,'metric'), Y ...

最新文章

  1. python 排序算法 简书_Python---简析八大排序算法
  2. 16. 3Sum Closest 最接近的三数之和
  3. 简单的WinInet编程
  4. 论文浅尝 | 可建模语义分层的知识图谱补全方法
  5. 生物大分子的计算机模拟就业,生物大分子模拟
  6. 导师没项目怎么办?不如看看这些
  7. Apache kafka原理与特性(0.8V)
  8. 如果连这10个Python缩写都不知道,那你一定是Python新手
  9. 机器学习实战(七)线性回归(Linear Regression)
  10. The process names are sorted in descending
  11. vue.js MVVM模式介绍及案例
  12. 李宏毅-《深度学习人类语言处理》国语版(2020)视频课程及ppt分享
  13. Foreach In(C#)
  14. 用C语言播放mp3格式的音乐
  15. 在matlab下使用深度学习预训练模型Alex Net进行迁移学习的实验与分析
  16. Win11系统怎么设置默认浏览器教学
  17. pandas处理excel单元格合并后的列
  18. prometheus监控之postgresql
  19. 九宫格拼图游戏初版(练练手)
  20. Parallels Desktop 16 网络初始化失败

热门文章

  1. 内存气球 linux,【官方推荐】Linux环境下安装EduSoho - 在线学习网络课程平台_课程内容平台_EduSoho官方教程 - 气球鱼学院...
  2. 慧通编程入门课程 - 3色彩斑斓
  3. 软件工程毕业设计课题(3)基于python的毕业设计python电子书小说网站系统毕设作品源码
  4. Python实现个人微信号自动监控告警
  5. IIS中配置PHP运行环境
  6. ffmpeg configure中文帮助文档
  7. [绝杀技] 通过.ibd对mysql数据恢复
  8. Cocos2d-x之Touch事件
  9. es日期format_es-sql – 版本5.6.3 – date_format 查询时间格式化使用说明
  10. 音符起始点检测(音频节奏检测)(7)