input_layer_size = 400;
hidden_layer_size = 25;
num_labels = 10;
%%Loading and Visualizing Data
load('ex3data1.mat');
m = size(X, 1);
sel = randperm(size(X, 1));
sel = sel(1:100);
displayData(X(sel, :));
%%Loading Pameters
load('ex3weights.mat');
%%Implement Predict
pred = predict(Theta1, Theta2, X);
function p = predict(Theta1, Theta2, X)
m = size(X, 1);
num_labels = size(Theta2, 1);
p = zeros(size(X, 1), 1);
X=[ones(m,1),X];
X1=sigmoid(X*Theta1.');
X1=[ones(size(X1,1),1),X1];
[~,p]=max(X1*Theta2.',[],2);
end
fprintf('\nTraining Set Accuracy: %f\n', mean(double(pred == y)) * 100);
rp = randperm(m);
for i = 1:m
% Display
fprintf('\nDisplaying Example Image\n');
displayData(X(rp(i), :));
pred = predict(Theta1, Theta2, X(rp(i),:));
fprintf('\nNeural Network Prediction: %d (digit %d)\n', pred, mod(pred, 10));
% Pause
fprintf('Program paused. Press enter to continue.\n');
pause;
end