Home > release > test_compare.m

test_compare

PURPOSE ^

TEST_COMPARE - Computes and plots Figure 1

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 TEST_COMPARE - Computes and plots Figure 1

 See also
  PLOT_TENSORWORKSHOP10

 Reference
 "On the extension of trace norm to tensors"
 Ryota Tomioka, Kohei Hayashi, and Hisashi Kashima
 arXiv:1010.0789
 http://arxiv.org/abs/1010.0789

 Copyright(c) 2010 Ryota Tomioka
 This software is distributed under the MIT license. See license.txt

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % TEST_COMPARE - Computes and plots Figure 1
0002 %
0003 % See also
0004 %  PLOT_TENSORWORKSHOP10
0005 %
0006 % Reference
0007 % "On the extension of trace norm to tensors"
0008 % Ryota Tomioka, Kohei Hayashi, and Hisashi Kashima
0009 % arXiv:1010.0789
0010 % http://arxiv.org/abs/1010.0789
0011 %
0012 % Copyright(c) 2010 Ryota Tomioka
0013 % This software is distributed under the MIT license. See license.txt
0014 
0015 
0016 nrep=10;
0017 nsample = 1;
0018 sz=[50 50 20];
0019 trfrac=0.05:0.05:0.95;
0020 
0021 tol=1e-3;
0022 
0023 methods = {'matrix','constraint','mixture','tucker','tuckertrue'};
0024 base_err = cumsum([0, 3, 1, 1, 1]);
0025 
0026 for ll=1:nsample
0027   % dtrue=round(rand(1,3)*40);
0028   dtrue=[7,8,9];
0029 
0030 
0031   for kk=1:nrep
0032     X0=randtensor3(sz,dtrue);
0033     nn=prod(sz);
0034 
0035     for ii=1:length(trfrac)
0036       ntr=round(nn*trfrac(ii));
0037       ind=randperm(nn); ind=ind(1:ntr)';
0038       ind_test=setdiff(1:prod(sz), ind);
0039       [I,J,K]=ind2sub(sz,ind);
0040       yy=X0(ind);
0041 
0042       for mm=1:length(methods)
0043         switch(methods{mm})
0044          case 'matrix'
0045           %% Tensor as a matrix
0046           tic;
0047           [X1,Z1,fval1,gval1]=tensor_as_matrix(zeros(sz), {I,J,K}, yy, 1, tol);
0048           time(kk,ii,mm)=toc;
0049           gval(kk,ii,mm)=max(gval1);
0050           for jj=1:ndims(X0)
0051             Xjj = flatten_adj(Z1{jj},sz,jj);
0052             err(kk,ii,base_err(mm)+jj)=norm(Xjj(ind_test)-X0(ind_test));
0053           end
0054          case 'constraint'
0055           %% Constrained
0056           tic;
0057           [X,Z,Y,fval,gvals]=tensorconst_adm(zeros(sz),{I,J,K},yy,0,1, tol);
0058           time(kk,ii,mm)=toc;
0059           gval(kk,ii,mm)=gvals(end);
0060           err(kk,ii,base_err(mm)+1)=norm(X(ind_test)-X0(ind_test));
0061          case 'mixture'
0062           %% Mixture
0063           tic;
0064           [X2,Z2,fval2,gval2]=tensormix_adm(zeros(sz), {I,J,K}, yy, ...
0065                                             0, 1, tol);
0066           time(kk,ii,mm)=toc;
0067           gval(kk,ii,mm)=gval2(end);
0068           err(kk,ii,base_err(mm)+1)=norm(X2(ind_test)-X0(ind_test));
0069          case {'tucker','tuckertrue'}
0070           %% Tucker
0071           Xobs=zeros(sz);
0072           Xobs(ind)=X0(ind);
0073           Xobs(ind_test)=nan;
0074           Options(5)=100;
0075           if strcmp(methods{mm},'tuckertrue')
0076             dd = dtrue;
0077           else
0078             dd = round(dtrue*1.2);
0079           end
0080           tic;
0081           [Factors,G,ExplX,Xm]=tucker(Xobs, dd, Options);
0082           time(kk,ii,mm)=toc;
0083           gval(kk,ii,mm)=nan;
0084           err(kk,ii,base_err(mm)+1)=norm(Xm(ind_test)-X0(ind_test));
0085         otherwise
0086          error('Method [%s] unknown!', methods{mm});
0087         end
0088       end
0089      fprintf('frac=%g\nerr1=%s  err2=%g  err3=%g  err4=%g err5=%g\n',...
0090               trfrac(ii), printvec(err(kk,ii,1:3)),...
0091               err(kk,ii,4), err(kk,ii,5), err(kk,ii,6), err(kk,ii,7));
0092       fprintf('time1=%g      time2=%g time3=%g time4=%g time5=%g\n', time(kk,ii,1),time(kk,ii,2),time(kk,ii,3),time(kk,ii,4),time(kk,ii,5));
0093       end
0094   end
0095 
0096   file_save=sprintf('result_compare5_new_%d_%d_%d_%d_%d_%d.mat',sz(1),sz(2),sz(3),dtrue(1),dtrue(2),dtrue(3));
0097 
0098 
0099   save(file_save,'nrep', 'sz', 'dtrue', 'methods','err', 'trfrac','gval','time');
0100    
0101     
0102 end
0103 
0104 plot_tensorworkshop10

Generated on Wed 22-Dec-2010 16:09:20 by m2html © 2003