I'm getting this error when I tried to select a custom number of images for training and validation "Index in position 3 exceeds array bounds (must not exceed 1)."

1 view (last 30 days)
%% Inicializes the IDE enviornement
clc
clear
close all
%% Load the Image data
% Images
trainImagesFile = "train-images-idx3-ubyte.gz";
testImagesFile = "t10k-images-idx3-ubyte.gz";
img_T = LoadImageData(trainImagesFile);
Error using checkfilename>validateFilename
Function GUNZIP was unable to find file ''train-images-idx3-ubyte.gz''.

Error in checkfilename (line 49)
[fullfilename, fid] = validateFilename( ...

Error in gunzip>checkFilesURLInput (line 124)
[fullFileName, url] = checkfilename(inputFiles{1}, validExtensions, fcnName, ...

Error in gunzip (line 63)
[files, url, urlFilename] = checkFilesURLInput(files, {'gz'},'FILES',mfilename);

Error in solution>LoadImageData (line 43)
gunzip(filename,dataFolder);
img_V = LoadImageData(testImagesFile);
%Labels
trainLabelFile = "train-labels-idx1-ubyte.gz";
testLabelFile = "t10k-labels-idx1-ubyte.gz";
labels_T = LoadLabelData(trainLabelFile);
labels_V = LoadLabelData(testLabelFile);
% Shows 40.000 images
% figure
% montage(img_T(:,:,1:100))
% figure
% montage(img_T(:,:,1:60000))
labels_T=labels_T(:,:,1:30000);
labels_V=labels_V(:,:,1:6000);
img_T=img_T(:,:,1:30000);
img_V=img_V(:,:,1:6000);
%% Saves a MAT file for further processing
% Adds the channel dimention
img_T = reshape(img_T,[28,28,1,30000]);
img_V = reshape(img_V,[28,28,1,6000]);
% Transforms to the correct type for classification
labels_T = categorical(labels_T);
labels_V = categorical(labels_V);
save 'MNIST_Train.mat' img_T labels_T
save 'MNIST_Validation.mat' img_V labels_V
% Loads a compressed IDX3 file with image data
function X = LoadImageData(filename)
dataFolder = fullfile(tempdir,'mnist');
gunzip(filename,dataFolder);
[~,name,~] = fileparts(filename);
[fileID,errmsg] = fopen(fullfile(dataFolder,name),'r','b');
magicNum = fread(fileID,1,'int32',0,'b');
if magicNum == 2051
fprintf('\nRead MNIST image data...\n')
end
numImages = fread(fileID,1,'int32',0,'b');
fprintf('Number of images in the dataset: %6d ...\n',numImages);
numRows = fread(fileID,1,'int32',0,'b');
numCols = fread(fileID,1,'int32',0,'b');
X = fread(fileID,inf,'unsigned char');
X = reshape(X,numCols,numRows,numImages);
X = permute(X,[2 1 3]);
X = X./255;
fclose(fileID);
end
% Loads a compressed IDX1 file with label data
function labels = LoadLabelData(filename)
dataFolder = fullfile(tempdir,'mnist3');
gunzip(filename,dataFolder);
[~,name,~] = fileparts(filename);
[fid,errmsg] = fopen(fullfile(dataFolder,name),'r','b');
% Read digit labels
header = fread(fid, 1, 'int32');
if header ~= 2049
error('Invalid label file header');
end
count = fread(fid, 1, 'int32');
labels = fread(fid, count, 'uint8');
fclose(fid);
end
You need mnist database

Answers (0)

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!