From 073fbf020404349c9f289b1258fcb1237684ecc5 Mon Sep 17 00:00:00 2001 From: neingeist Date: Thu, 23 Oct 2014 23:36:15 +0200 Subject: [PATCH] Add neural network prediction function --- ex3/predict.m | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/ex3/predict.m b/ex3/predict.m index d8a8faf..dab44fa 100644 --- a/ex3/predict.m +++ b/ex3/predict.m @@ -7,12 +7,12 @@ function p = predict(Theta1, Theta2, X) m = size(X, 1); num_labels = size(Theta2, 1); -% You need to return the following variables correctly +% You need to return the following variables correctly p = zeros(size(X, 1), 1); % ====================== YOUR CODE HERE ====================== % Instructions: Complete the following code to make predictions using -% your learned neural network. You should set p to a +% your learned neural network. You should set p to a % vector containing labels between 1 to num_labels. % % Hint: The max function might come in useful. In particular, the max @@ -21,13 +21,22 @@ p = zeros(size(X, 1), 1); % can use max(A, [], 2) to obtain the max for each row. % +% Theta1 has size 25x401 +% Theta2 has size 10x26 +a1 = [ones(m, 1) X]; +% a1 has size mx401 +a2_tmp = sigmoid(a1 * Theta1'); +% a2_tmp has size m x 401 * 401 x 25 = m x 25 +a2 = [ones(m, 1) a2_tmp]; +% a2 has size m x 26 +a3 = sigmoid(a2 * Theta2'); +% a3 has size m x 26 * 26 x 10 = m x 10 +% note: sigmoid not actually neded here (arg max(sigmoid(z)) = arg max(z)) - - - +[~, p] = max(a3, [], 2); % =========================================================================