MNIST手写数字图像数据库
60000个训练集,10000个测试集,灰度图,大小均为28*28
数据集网址:http://yann.lecun.com/exdb/mnist/
train-images-idx3-ubyte.gz: training set images (9912422 bytes)
train-labels-idx1-ubyte.gz: training set labels (28881 bytes)
t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)
下载后得到以上四个文件,解压后得到的数据matlab无法直接读取这个格式,故写了一个matlab程序读取该数据。
demoMNIST.m - 主程序
%% MNIST数据库读取
%读取MNIST数据集中的图片
train_images = readMNISTImages('train-images-idx3-ubyte'); %60000个训练集,大小为28*28*60000
test_images = readMNISTImages('t10k-images-idx3-ubyte'); %10000个训练集,大小为28*28*10000
%读取MNIST数据集中的标签
train_labels1 = readMNISTLabels('train-labels-idx1-ubyte');%标签0~9;60000个标签,大小为60000*1
test_labels1 = readMNISTLabels('t10k-labels-idx1-ubyte'); %10000个标签,大小为10000*1
readMNISTImages.m - 读取数据集中的图片
function images = readMNISTImages(filename)
%
%功能:读取MNIST数据集中的图片
%Input:
%filename - 文件名称
%
%Output:
%images - 读取到的图片(28*28*图片数)
FID=fopen(filename,'r'); %fopen()是最核心的函数,导入文件; 'r'代表读入
%读取前16个字节(一个字节八位),(这儿的注释以训练集图片为例)
magic = fread(FID, 1, 'int32', 0, 'ieee-be'); %0 0 8 3 -> 00000000 00000000 00000100 00000011 -> 2051
numImages = fread(FID, 1, 'int32', 0, 'ieee-be'); %0 0 234 96 -> 60000
numRows = fread(FID, 1, 'int32', 0, 'ieee-be'); %0 0 0 28 -> 28
numCols = fread(FID, 1, 'int32', 0, 'ieee-be'); %0 0 0 28 -> 28
%读取大小为28*28的图片
images = fread(FID, inf, 'unsigned char'); %sizeA 输出数组的维度有3种参数,Inf、n、[m,n],Inf 代表输出数据是列向量,文件中每一个元素对应一个值
images = reshape(images, numCols, numRows, numImages);
images = permute(images,[2 1 3]);%交换第一维和第二维,相当于转置;因为图片是反的所以需要翻转一下
fclose(FID);
end
readMNISTLabels.m - 读取数据集中的标签
function labels = readMNISTLabels(filename)
%
%功能:读取MNIST数据集中的标签
%
%Input:
%filename - 文件名
%
%Output:
%labels - 读取的标签(1*标签数)
fid = fopen(filename,'r');
%读取前八字节
magic = fread(fid,1,'int32',0,'ieee-be');
%或
% magic = fread(fid,4);
% magic = ((magic(1)*256 + magic(2))*256+magic(3))*256 + magic(4);
numLabels = fread(fid,1,'int32',0,'ieee-be');
%读取标签
labels = fread(fid,Inf,'unsigned char');
labels = labels';
fclose(fid);
end
数据格式(见 MNIST数据集网址)
MNIST数据集下载:https://download.csdn.net/download/u012654981/10992769
mat格式的MNIST数据集下载:https://download.csdn.net/download/u012654981/10992779