wolffd@0: function [count total] = gen_classify(W, visB, hidB,mW,test_file,test_label); wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: % RBM for generative classification % wolffd@0: % conf: training setting % wolffd@0: % WW = [W visB hidB] % wolffd@0: % mW: mask of connections % wolffd@0: % -*-sontran2012-*- % wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: %% Loading data & label wolffd@0: vars = whos('-file', test_file); wolffd@0: A = load(test_file,vars(1).name); wolffd@0: data = A.(vars(1).name); wolffd@0: vars = whos('-file', test_label); wolffd@0: A = load(test_label,vars(1).name); wolffd@0: label = A.(vars(1).name); wolffd@0: assert(size(data,1) == size(label,1),'[KRBM-GEN] Number of data and label mismatch'); wolffd@0: Classes = unique(label)'; wolffd@0: lNum = size(Classes,2); wolffd@0: %% Loading structure wolffd@0: [total visNum]= size(data); wolffd@0: sNum = 500; % fix wolffd@0: bNum = floor(total/sNum); % divide the testing samples to batches of sNum wolffd@0: %% Classifying wolffd@0: count = 0; wolffd@0: for i=1:bNum wolffd@0: % Find the position of softmax unit which make lowest free energy wolffd@0: L = lowest_fenergy(data((i-1)*sNum + 1:i*sNum,:),W, visB, hidB,Classes); wolffd@0: count = count + sum(L==label((i-1)*sNum + 1:i*sNum)); wolffd@0: end wolffd@0: L = lowest_fenergy(data(bNum*sNum + 1:total,:),W, visB, hidB,Classes); wolffd@0: count = count + sum(L==label(bNum*sNum + 1:total)); wolffd@0: fprintf('Correct rate: %f (%d/%d)\n',count/total,count,total); wolffd@0: clear A vars data lNum sNum bNum out; wolffd@0: end wolffd@0: