From a9cee6e86707465ebf184908226f4d285ef72aac Mon Sep 17 00:00:00 2001 From: Vahagn Khachatryan Date: Tue, 16 May 2017 22:11:33 +0100 Subject: [PATCH] Machine learning assignment 4 --- .../course2/assignment4/a4_init.m | 27 +++++++ .../course2/assignment4/a4_main.m | 67 ++++++++++++++++++ .../course2/assignment4/a4_rand.m | 9 +++ .../assignment4/a4_randomness_source.mat | Bin 0 -> 2803086 bytes .../course2/assignment4/answers.txt | 17 +++++ machine_learning/course2/assignment4/cd1.m | 26 +++++++ .../assignment4/configuration_goodness.m | 9 +++ .../configuration_goodness_gradient.m | 8 +++ .../course2/assignment4/data_set.mat | Bin 0 -> 23409008 bytes .../course2/assignment4/describe_matrix.m | 4 ++ .../course2/assignment4/extract_mini_batch.m | 5 ++ .../hidden_state_to_visible_probabilities.m | 9 +++ .../course2/assignment4/logistic.m | 4 ++ .../course2/assignment4/octave-workspace | Bin 0 -> 26574105 bytes .../course2/assignment4/optimize.m | 19 +++++ .../course2/assignment4/sample_bernoulli.m | 9 +++ .../course2/assignment4/show_rbm.m | 23 ++++++ .../visible_state_to_hidden_probabilities.m | 10 +++ 18 files changed, 246 insertions(+) create mode 100644 machine_learning/course2/assignment4/a4_init.m create mode 100644 machine_learning/course2/assignment4/a4_main.m create mode 100644 machine_learning/course2/assignment4/a4_rand.m create mode 100644 machine_learning/course2/assignment4/a4_randomness_source.mat create mode 100644 machine_learning/course2/assignment4/answers.txt create mode 100644 machine_learning/course2/assignment4/cd1.m create mode 100644 machine_learning/course2/assignment4/configuration_goodness.m create mode 100644 machine_learning/course2/assignment4/configuration_goodness_gradient.m create mode 100644 machine_learning/course2/assignment4/data_set.mat create mode 100644 machine_learning/course2/assignment4/describe_matrix.m create mode 100644 machine_learning/course2/assignment4/extract_mini_batch.m create mode 100644 machine_learning/course2/assignment4/hidden_state_to_visible_probabilities.m create mode 100644 machine_learning/course2/assignment4/logistic.m create mode 100644 machine_learning/course2/assignment4/octave-workspace create mode 100644 machine_learning/course2/assignment4/optimize.m create mode 100644 machine_learning/course2/assignment4/sample_bernoulli.m create mode 100644 machine_learning/course2/assignment4/show_rbm.m create mode 100644 machine_learning/course2/assignment4/visible_state_to_hidden_probabilities.m diff --git a/machine_learning/course2/assignment4/a4_init.m b/machine_learning/course2/assignment4/a4_init.m new file mode 100644 index 0000000..1555639 --- /dev/null +++ b/machine_learning/course2/assignment4/a4_init.m @@ -0,0 +1,27 @@ +global randomness_source +load a4_randomness_source + +global data_sets +temp = load('data_set'); % same as in PA3 +data_sets = temp.data; + +global report_calls_to_sample_bernoulli +report_calls_to_sample_bernoulli = false; + +test_rbm_w = a4_rand([100, 256], 0) * 2 - 1; +small_test_rbm_w = a4_rand([10, 256], 0) * 2 - 1; + +temp = extract_mini_batch(data_sets.training, 1, 1); +data_1_case = sample_bernoulli(temp.inputs); +temp = extract_mini_batch(data_sets.training, 100, 10); +data_10_cases = sample_bernoulli(temp.inputs); +temp = extract_mini_batch(data_sets.training, 200, 37); +data_37_cases = sample_bernoulli(temp.inputs); + +test_hidden_state_1_case = sample_bernoulli(a4_rand([100, 1], 0)); +test_hidden_state_10_cases = sample_bernoulli(a4_rand([100, 10], 1)); +test_hidden_state_37_cases = sample_bernoulli(a4_rand([100, 37], 2)); + +report_calls_to_sample_bernoulli = true; + +clear temp; diff --git a/machine_learning/course2/assignment4/a4_main.m b/machine_learning/course2/assignment4/a4_main.m new file mode 100644 index 0000000..ce0cb26 --- /dev/null +++ b/machine_learning/course2/assignment4/a4_main.m @@ -0,0 +1,67 @@ +% This file was published on Wed Nov 14 20:48:30 2012, UTC. + +function a4_main(n_hid, lr_rbm, lr_classification, n_iterations) +% first, train the rbm + global report_calls_to_sample_bernoulli + report_calls_to_sample_bernoulli = false; + global data_sets + if prod(size(data_sets)) ~= 1, + error('You must run a4_init before you do anything else.'); + end + rbm_w = optimize([n_hid, 256], ... + @(rbm_w, data) cd1(rbm_w, data.inputs), ... % discard labels + data_sets.training, ... + lr_rbm, ... + n_iterations); + % rbm_w is now a weight matrix of by + show_rbm(rbm_w); + input_to_hid = rbm_w; + % calculate the hidden layer representation of the labeled data + hidden_representation = logistic(input_to_hid * data_sets.training.inputs); + % train hid_to_class + data_2.inputs = hidden_representation; + data_2.targets = data_sets.training.targets; + hid_to_class = optimize([10, n_hid], @(model, data) classification_phi_gradient(model, data), data_2, lr_classification, n_iterations); + % report results + for data_details = reshape({'training', data_sets.training, 'validation', data_sets.validation, 'test', data_sets.test}, [2, 3]), + data_name = data_details{1}; + data = data_details{2}; + hid_input = input_to_hid * data.inputs; % size: