Home > demo3 > caltechexp.m

caltechexp

PURPOSE ^

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 c_dir = {'cannon','cup'};
0002 base_dir = 'C:\Users\Suzuki\Documents\Study\Data Set\101_ObjectCategories\';
0003 sift_type = {'hsvsift','sift','huesift','rgbhistogram'};
0004 
0005 [K1 Y var1] = make_sift_kernel(c_dir,base_dir,{'hsvsift','sift'});
0006 [K2 Y var2] = make_sift_kernel(c_dir,base_dir,{'huesift','rgbhistogram'});
0007 
0008 K3 = make_sift_kernel_from_var(var1,1);
0009 K4 = make_sift_kernel_from_var(var2,1);
0010 
0011 K5 = [];
0012 sigma_vec = linspace(1,50,5);
0013 for sig=sigma_vec
0014     Ktmp = make_sift_kernel_from_var(var1,1,@(x,y)gauss_kernel(x,y,sig));
0015     if sig==sigma_vec(1)
0016         K5 = Ktmp;
0017     else
0018         K5 = addkernel(K5,Ktmp);
0019     end;
0020 end;
0021 
0022 kappa_vec = linspace(0.01,1,10);
0023 theta_vec = -[10 100 500];
0024 ii=0;
0025 for kp=kappa_vec
0026     for th=theta_vec
0027         ii = ii+1;
0028         Ktmp = make_sift_kernel_from_var(var1,0,@(x,y)sigmoid_kernel(x,y,kp,th));
0029         if ii==1
0030             K6 = Ktmp;
0031         else
0032             K6 = addkernel(K6,Ktmp);
0033         end;
0034     end;
0035 end;
0036 
0037 d_vec = [1:5];
0038 ii=0;
0039 for dd = d_vec
0040     ii = ii+1;
0041     Ktmp = make_sift_kernel_from_var(var1,1,@(x,y)polynomial_kernel(x,y,dd));
0042     if ii==1
0043         K7 = Ktmp;
0044     else
0045         K7 = addkernel(K7,Ktmp);
0046     end;
0047 end;
0048 
0049 gamma_vec = linspace(1,50,10);
0050 for gamma=gamma_vec
0051     Ktmp = make_sift_kernel_from_var(var1,1,@(x,y)chi2_kernel(x,y,gamma));
0052     if gamma==gamma_vec(1)
0053         K8 = Ktmp;
0054     else
0055         K8 = addkernel(K8,Ktmp);
0056     end;
0057 end;
0058 
0059 K=K3;
0060 K=addkernel(K,K5);
0061 K=addkernel(K,K7);
0062 K=addkernel(K,K8);
0063 
0064 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0065 
0066 yapp = ((Y==1) - (Y==2))';
0067 
0068 each_numtr = 15;
0069 num_tr = each_numtr*2;
0070 num_sample = size(K,1);
0071 yout = unique(yapp);
0072 
0073 
0074 options.stopdualitygap = 1;
0075 options.stopIneqViolation = 0;
0076 options.tolOuter = 0.01;
0077 options.tolInner = 0.000001;
0078 options.loss = 'logit';
0079 options.display = 2;
0080 C = 0.01;
0081 
0082 test_error = [];
0083 VALID_NUM = 40;
0084 for VALID_STAGE=1:VALID_NUM
0085     tr_ind = [];
0086     for i=1:length(yout)
0087         ind = find(yapp==yout(i));
0088         ind = ind(randperm(length(ind)));
0089         tr_ind = [tr_ind; ind(1:each_numtr)];
0090     end;
0091     te_ind = setdiff(1:num_sample,tr_ind);
0092 
0093 
0094     [alpha,d,b,activeset,posind,params,story] = SpicyMKL(K(tr_ind,tr_ind,:),yapp(tr_ind),C,options);       
0095     Kte = concatkernel(K(te_ind,tr_ind,:),d);
0096     ypred = Kte(:,posind)*alpha(posind) + b;
0097     test_error(VALID_STAGE) = mean(sign(ypred)==yapp(te_ind));
0098 end;
0099 disp(['mean:' num2str(mean(test_error)) '  std:' num2str(std(test_error))]);

Generated on Sat 22-Aug-2009 22:15:36 by m2html © 2003