通过MATLAB读取mnist数据库
Posted fpga&matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过MATLAB读取mnist数据库相关的知识,希望对你有一定的参考价值。
mnist (手写字符识别) 的数据集下载地:
http://yann.lecun.com/exdb/mnist/
MNIST是在机器学习领域中的一个经典问题。该问题解决的是把28x28像素的灰度手写数字图片识别为相应的数字,其中数字的范围从0到9.下载后得到四个文件:
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
通过如下的MATLAB可以读取四个文件:
fid = fopen('train-labels.idx1-ubyte', 'rb');
trainLabels = fread(fid, inf, 'uint8', 'l');
trainLabels = trainLabels(9:end);
fclose(fid);
% read test labels
fid = fopen('t10k-labels.idx1-ubyte', 'rb');
testLabels = fread(fid, inf, 'uint8', 'l');
testLabels = testLabels(9:end);
fclose(fid);
% read train images
fid = fopen('train-images.idx3-ubyte', 'rb');
trainImages = fread(fid, inf, 'uint8', 'l');
trainImages = trainImages(17:end);
fclose(fid);
trainData = reshape(trainImages, 784, size(trainImages,1) / 784)';
% read train images
fid = fopen('t10k-images.idx3-ubyte', 'rb');
testImages = fread(fid, inf, 'uint8', 'l');
testImages = testImages(17:end);
fclose(fid);
testData = reshape(testImages, 784, size(testImages,1) / 784)';
运行后,可以看到:
可以看到60000个训练数据,10000个测试数据。
以上是关于通过MATLAB读取mnist数据库的主要内容,如果未能解决你的问题,请参考以下文章