% 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: