Wednesday 7 November 2018

mnistclassify analysis 1

% Version 1.000
%
% Code provided by Ruslan Salakhutdinov and Geoff Hinton 
%
% Permission is granted for anyone to copy, use, modify, or distribute this
% program and accompanying programs and documents for any purpose, provided
% this copyright notice is retained and prominently displayed, along with
% a note saying that the original programs are available from our
% web page.
% The programs and documents are distributed without any warranty, express or
% implied.  As the programs were written for research purposes only, they have
% not been tested to the degree that would be advisable in any important
% application.  All use of these programs is entirely at the user's own risk.


% This program pretrains a deep autoencoder for MNIST dataset
% You can set the maximum number of epochs for pretraining each layer
% and you can set the architecture of the multilayer net.

clear all
close all

maxepoch=1; % maxepoch=50;
numhid=250; numpen=250; numpen2=50; % numhid=500; numpen=500; numpen2=2000;

fprintf(1,'Converting Raw files into Matlab format \n');
%converter;
dos('erase *.ascii');

fprintf(1,'Pretraining a deep autoencoder. \n');
fprintf(1,'The Science paper used 50 epochs. This uses %3i \n', maxepoch);

makebatches;
[numcases numdims numbatches]=size(batchdata);  % 100 784 600

fprintf(1,'Pretraining Layer 1 with RBM: %d-%d \n',numdims,numhid); % 784 250
restart=1;
rbm;
hidrecbiases=hidbiases; % 1 250
save mnistvhclassify vishid hidrecbiases visbiases; % 784 250, 1 250, 1 784

fprintf(1,'\nPretraining Layer 2 with RBM: %d-%d \n',numhid,numpen); % 250 250
batchdata=batchposhidprobs; % 100 250 600
numhid=numpen; %250
restart=1;
rbm;
hidpen=vishid; penrecbiases=hidbiases; hidgenbiases=visbiases;
save mnisthpclassify hidpen penrecbiases hidgenbiases; %hidpen 250 250, penrecbiases 1 250, hidgenbiases 1 250

fprintf(1,'\nPretraining Layer 3 with RBM: %d-%d \n',numpen,numpen2); % 250 50
batchdata=batchposhidprobs;
numhid=numpen2;
restart=1;
rbm;
hidpen2=vishid; penrecbiases2=hidbiases; hidgenbiases2=visbiases;
save mnisthp2classify hidpen2 penrecbiases2 hidgenbiases2; %hidpen2 250 50, penrecbiases2 1 50, hidgenbiases2 1 250

backpropclassify;