通过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个测试数据。

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/123342394#comments_22126807