wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: % Main script of KRBM-Knowledge-based Restricted Boltzmann Machine % wolffd@0: % -*-sontran2012-*- % wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: %% loading background knowledge wolffd@0: % bk_file = 'XOR.bk'; wolffd@0: % w = 5; wolffd@0: W = rand(0,0); wolffd@0: mW = rand(0,0); wolffd@0: % [W mW nNames] = encode_bk(bk_file,w) wolffd@0: %%% visualize_system(W,nNames,w,100,100); wolffd@0: %% Loading data wolffd@0: PRO_DIR = 'C://Pros/'; wolffd@0: % dat_file = 'XOR.dat'; wolffd@0: % dat_file = 'DNA.dat'; wolffd@0: % train_file = strcat(PRO_DIR,'/Data/ICDAR/digit_train_data.mat'; wolffd@0: % train_label = strcat(PRO_DIR,'/Data/ICDAR/digit_train_label.mat'; wolffd@0: % test_file = strcat(PRO_DIR,'/Data/ICDAR/digit_test_data.mat'; wolffd@0: % test_label = strcat(PRO_DIR,'/Data/ICDAR/digit_test_label.mat'; wolffd@0: %----------------------------------------------------- wolffd@0: % train_file = strcat(PRO_DIR,'/Data/MNIST/mnist_train_data.mat'; wolffd@0: % train_label = strcat(PRO_DIR,'/Data/MNIST/mnist_train_label.mat'; wolffd@0: % test_file = strcat(PRO_DIR,'/Data/MNIST/mnist_test_data.mat'; wolffd@0: % test_label = strcat(PRO_DIR,'/Data/MNIST/mnist_test_label.mat'; wolffd@0: %----------------------------------------------------- wolffd@0: % train_file = strcat(PRO_DIR,'/RBMLIB/train_dat.mat'); wolffd@0: % train_label = strcat(PRO_DIR,'/RBMLIB/train_lab.mat'); wolffd@0: % test_file = strcat(PRO_DIR,'/RBMLIB/test_dat.mat'); wolffd@0: % test_label = strcat(PRO_DIR,'/RBMLIB/test_lab.mat'); wolffd@0: %----------------------------------------------------- wolffd@0: % train_file = strcat(PRO_DIR,'/RBMLIB/train_dat.mat'); wolffd@0: data_file = strcat(PRO_DIR,'/DATA/XOR/xorall.mat'); wolffd@0: mod_file = strcat(PRO_DIR,'/DATA/XOR/model.mat'); wolffd@0: %% Move weights encoded from rule to right position of input if needed wolffd@0: wolffd@0: %% Setting parameters wolffd@0: conf.hidNum = 4; wolffd@0: conf.eNum = 50; % number of epoch wolffd@0: conf.bNum = 1; % number of batches devides the data set wolffd@0: conf.sNum = 4; % number of samples per batch wolffd@0: conf.gNum = 1; % number of iteration for gibb sampling wolffd@0: conf.params = [0.5 0.5 0.1 0.00002]; % [lr1 lr2 momentum cost] wolffd@0: % lr1: learning rate in first 10 epoches wolffd@0: % lr2: learning rate in the other epoches wolffd@0: %% Training system wolffd@0: % training_kbrm(conf,W,mW,dat_file); % unsupevised learning wolffd@0: % [W visB hidB] = gen_training_kbrbm(conf,W,mW,train_file,train_label); % unsupervised learning for generative classification wolffd@0: % dis_training_kbrm(conf,W,mW,dat_file,dat_label); % unsupervised learning for discriminative classification wolffd@0: [W visB hidB] = training_rbm(conf,W,mW,data_file); wolffd@0: save(mod_file,'W','mW','visB','hidB'); wolffd@0: nNames = {'X' 'Y' 'Z'}; wolffd@0: visualize_system(W,nNames,100,100); wolffd@0: %% Classify (if wanted) wolffd@0: % gen_classify(W, visB, hidB,mW,test_file,test_label); wolffd@0: %% Generate features (if wanted) wolffd@0: % in_f_file = '../Data/ICDAR/images.bin'; wolffd@0: % out_f_file = '../Data/ICDAR/feature.mat'; wolffd@0: % input_features = mnist2mat(in_f_file); wolffd@0: % output_features = input_features*W; wolffd@0: % save(out_f_file,'output_features'); wolffd@0: %% Extract knowledge (if wanted) wolffd@0: % name_file = 'names.txt'; % File contains name of input wolffd@0: % rule_file = 'rules.txt'; wolffd@0: % extract_knowledge(rule_file,W); wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: clear;