Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 3.87 KB | None | 0 0
  1. clear ; close all; clc
  2.  
  3. %% Setup the parameters you will use for this exercise
  4. input_layer_size  = 400;  
  5. hidden_layer_size = 25;  
  6. num_labels = 10;          
  7. % (note that we have mapped "0" to label 10)
  8.  
  9. %%  Part 1: Loading and Visualizing Data
  10.  
  11. fprintf('Loading and Visualizing Data ...\n')
  12. load('ex4data1.mat');
  13. m = size(X, 1);
  14.  
  15. % Randomly select 100 data points to display
  16. sel = randperm(size(X, 1));
  17. sel = sel(1:100);
  18. displayData(X(sel, :));
  19. fprintf('Program paused. Press enter to continue.\n');
  20. pause;
  21.  
  22.  
  23. %% Part 2: Loading Parameters
  24.  
  25. fprintf('\nLoading Saved Neural Network Parameters ...\n')
  26. load('ex4weights.mat');
  27. nn_params = [Theta1(:) ; Theta2(:)];
  28.  
  29. %% Part 3: Compute Cost (Feedforward)
  30. fprintf('\nFeedforward Using Neural Network ...\n')
  31.  
  32. % regularization parameter = 0
  33. lambda = 0;
  34. J = nnCostFunction(nn_params, input_layer_size, hidden_layer_size, ...
  35.                    num_labels, X, y, lambda);
  36.  
  37. fprintf(['Cost at parameters (loaded from ex4weights): %f '...
  38.          '\n'], J);
  39.  
  40. fprintf('\nProgram paused. Press enter to continue.\n');
  41. pause;
  42.  
  43. %% Part 4: Implement Regularization
  44.  
  45. fprintf('\nChecking Cost Function (w/ Regularization) ... \n')
  46.  
  47. % Weight regularization parameter (we set this to 1 here).
  48. lambda = 1;
  49.  
  50. J = nnCostFunction(nn_params, input_layer_size, hidden_layer_size, ...
  51.                    num_labels, X, y, lambda);
  52.  
  53. fprintf(['Cost at parameters (loaded from ex4weights): %f '...
  54.          '\n'], J);
  55.  
  56. fprintf('Program paused. Press enter to continue.\n');
  57. pause;
  58.  
  59.  
  60. %% Part 5: Sigmoid Gradient
  61.  
  62. fprintf('\nEvaluating sigmoid gradient...\n')
  63.  
  64. g = sigmoidGradient([-1 -0.5 0 0.5 1]);
  65. fprintf('Sigmoid gradient evaluated at [-1 -0.5 0 0.5 1]:\n  ');
  66. fprintf('%f ', g);
  67. fprintf('\n\n');
  68.  
  69. fprintf('Program paused. Press enter to continue.\n');
  70. pause;
  71.  
  72.  
  73. %% Part 6: Initializing Pameters
  74.  
  75. fprintf('\nInitializing Neural Network Parameters ...\n')
  76.  
  77. initial_Theta1 = randInitializeWeights(input_layer_size, hidden_layer_size);
  78. initial_Theta2 = randInitializeWeights(hidden_layer_size, num_labels);
  79. initial_nn_params = [initial_Theta1(:) ; initial_Theta2(:)];
  80.  
  81.  
  82. %% Part 7: Implement Backpropagation
  83. fprintf('\nChecking Backpropagation... \n');
  84. checkNNGradients;
  85.  
  86. fprintf('\nProgram paused. Press enter to continue.\n');
  87. pause;
  88.  
  89.  
  90. %% Part 8: Implement Regularization
  91. fprintf('\nChecking Backpropagation (w/ Regularization) ... \n')
  92. lambda = 3;
  93. checkNNGradients(lambda);
  94. debug_J  = nnCostFunction(nn_params, input_layer_size, ...
  95.                           hidden_layer_size, num_labels, X, y, lambda);
  96.  
  97. fprintf(['\n\nCost at (fixed) debugging parameters (w/ lambda = %f): %f ' ...
  98.          '\n(for lambda = 3, this value should be about 0.576051)\n\n'], lambda, debug_J);
  99. fprintf('Program paused. Press enter to continue.\n');
  100. pause;
  101.  
  102.  
  103. %% Part 8: Training NN
  104. fprintf('\nTraining Neural Network... \n')
  105. options = optimset('MaxIter', 50);
  106. lambda = 1;
  107. costFunction = @(p) nnCostFunction(p, ...
  108.                                    input_layer_size, ...
  109.                                    hidden_layer_size, ...
  110.                                    num_labels, X, y, lambda);
  111.  
  112. [nn_params, cost] = fmincg(costFunction, initial_nn_params, options);
  113. Theta1 = reshape(nn_params(1:hidden_layer_size * (input_layer_size + 1)), ...
  114.                  hidden_layer_size, (input_layer_size + 1));
  115. Theta2 = reshape(nn_params((1 + (hidden_layer_size * (input_layer_size + 1))):end), ...
  116.                  num_labels, (hidden_layer_size + 1));
  117.  
  118. fprintf('Program paused. Press enter to continue.\n');
  119. pause;
  120.  
  121.  
  122. %% Part 9: Visualize Weights
  123.  
  124. fprintf('\nVisualizing Neural Network... \n')
  125.  
  126. displayData(Theta1(:, 2:end));
  127.  
  128. fprintf('\nProgram paused. Press enter to continue.\n');
  129. pause;
  130.  
  131. %% Part 10: Implement Predict
  132.  
  133. pred = predict(Theta1, Theta2, X);
  134.  
  135. fprintf('\nTraining Set Accuracy: %f\n', mean(double(pred == y)) * 100);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement