You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.9 KiB
Matlab

function [data,class,inTrain,inTest,imDims,numClasses]=images_load_dataset(task);
switch task
case 'USPS'
load('../../Data/usps.mat');
imDims=[16,16];
fixedSplit=7291;
class=data(:,257)';
data=data(:,1:256);
case 'MNIST'
imDims=[28,28];
trainingImagesPerDigit=2000;
data=[];class=[];
for i=1:10
load(['../../Data/LeCun-MNIST_handwrittendigits/digit',int2str(i-1)]);
class=[class,i*ones(1,trainingImagesPerDigit)];
data=[data;D(1:trainingImagesPerDigit,:)];
end
fixedSplit=size(data,1);
for i=1:10,
load(['../../Data/LeCun-MNIST_handwrittendigits/test',int2str(i-1)]);
class=[class,i*ones(1,size(D,1))];
data=[data;D];
end
case 'YALE'
imDims=2.*[24,21];
subjNum=[1:13,15:39];
datatrain=[];datatest=[];
classtrain=[];classtest=[];
for i=subjNum
if i<10
datadir=['../../Data/YaleFaceBExtendedCropped/yaleB0',int2str(i),'/'];
filenames=[datadir,'yaleB0',int2str(i),'_P00A*.pgm'];
else
datadir=['../../Data/YaleFaceBExtendedCropped/yaleB',int2str(i),'/'];
filenames=[datadir,'yaleB',int2str(i),'_P00A*.pgm'];
end
files=dir(filenames);
for j=1:length(files)
I=imread([datadir,files(j).name]);
x=single(imresize(I,imDims,'bilinear'))';
if j==odd(j)
datatrain=[datatrain,x(:)];
classtrain=[classtrain,i];
else
datatest=[datatest,x(:)];
classtest=[classtest,i];
end
end
end
fixedSplit=size(datatrain,2);
data=[datatrain,datatest]';
class=[classtrain,classtest];
imDims=fliplr(imDims);
end
numExemplars=length(class)
inTrain=1:fixedSplit;
inTest=fixedSplit+1:numExemplars;
%ensure class labels are sequentially numbered starting from 1
class=class+max(0,1-min(class));
k=0;
for c=unique(class)
k=k+1;
class(class==c)=k;
end
numClasses=k