Skip to content

Commit

Permalink
add wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
tiepvupsu committed May 19, 2016
1 parent d04a712 commit 2f8b94b
Show file tree
Hide file tree
Showing 26 changed files with 448 additions and 361 deletions.
44 changes: 44 additions & 0 deletions D2L2R2/D2L2R2_wrapper.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
function [acc, rt] = D2L2R2_wrapper(Y_train, label_train, Y_test, label_test,...
k, lambda1, lambda2, alpha)
if nargin == 0 %% test mode
addpath(fullfile('..', 'utils'));
addpath(fullfile('..', 'ODL'));
addpath(fullfile('..', 'LRSDL_FDDL'));
addpath(fullfile('..', 'D2L2R2'));
dataset = 'myYaleB';
N_train = 10;
k = 8;
lambda1 = 0.001;
lambda2 = 0.01;
alpha = 0.01;
% eta = 0.1;
[dataset, Y_train, Y_test, label_train, label_test] = train_test_split(...
dataset, N_train);
end
%% Data preparation
C = max(label_train);
opts.k = k;
opts.lambda1 = lambda1;
opts.lambda2 = lambda2;
opts.alpha = alpha;
opts.max_iter = 100;
opts.show = false;
opts.showD = false;
opts.verbal = true;
opts = initOpts(opts);
%% ========= Train ==============================
[D, D_range, X, CoefM, opts, rt] = D2L2R2(Y_train, label_train, opts);
%% ========= test ==============================
acc = [];
opts.verbal = false;
opts.max_iter = 300;
for vgamma = [0.001, 0.005, 0.01, 0.1]
opts.gamma = vgamma;
opts.weight = 0.5;

pred = D2L2R2_pred(Y_test, D, D_range, CoefM, opts);
acc = [acc double(sum(pred == label_test))/numel(label_test)];
fprintf('gamma = %.4f, acc = %5f\n', vgamma, acc(end));
end
best_acc = max(acc);
end
35 changes: 7 additions & 28 deletions D2L2R2_top.m
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,16 @@
k = 8;
lambda1 = 0.001;
lambda2 = 0.01;
alpha = 0.01;
% eta = 0.1;
alpha = 0.01;
end
%% Data preparation
t = getTimeStr();
[dataset, Y_train, Y_test, label_train, label_test] = train_test_split(...
dataset, N_train);
%% main
[acc, rt] = D2L2R2_wrapper(Y_train, label_train, Y_test, label_test,...
k, lambda1, lambda2, alpha)
%% save results
if ~exist('results', 'dir')
mkdir('results');
end
Expand All @@ -40,32 +43,8 @@
fn = fullfile('results', 'D2L2R2', strcat(dataset, '_N_', ...
num2str(N_train), '_k_', num2str(k), '_l1_', num2str(lambda1),...
'_l2_', num2str(lambda2), '_a_', num2str(alpha), '_', t, '.mat'));
disp(fn);
%% parameter preparation
C = max(label_train);
opts.k = k;
opts.lambda1 = lambda1;
opts.lambda2 = lambda2;
opts.alpha = alpha;
opts.max_iter = 100;
opts.show = false;
opts.showD = false;
opts.verbal = true;
opts = initOpts(opts);
%% ========= Train ==============================
[D, D_range, X, CoefM, opts, rt] = D2L2R2(Y_train, label_train, opts);
%% ========= test ==============================
acc = [];
opts.verbal = false;
opts.max_iter = 300;
for vgamma = [0.001, 0.005, 0.01, 0.1]
opts.gamma = vgamma;
opts.weight = 0.5;

pred = D2L2R2_pred(Y_test, D, D_range, CoefM, opts);
acc = [acc double(sum(pred == label_test))/numel(label_test)];
fprintf('gamma = %.4f, acc = %5f\n', vgamma, acc(end));
end
disp(fn);

save(fn, 'acc', 'rt');
best_acc = max(acc);
end
47 changes: 47 additions & 0 deletions DLCOPAR/DLCOPAR_wrapper.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
function [acc, rt] = DLCOPAR_wrapper(Y_train, label_train, Y_test , label_test, ...
k, k0, lambda, eta)
% function [acc, rt] = LRSDL_wrapper(Y_train, label_train, Y_test , label_test, ...
% k, k0, lambda1, lambda2, lambda3)
% -----------------------------------------------
% Author: Tiep Vu, [email protected], 5/11/2016
% (http://www.personal.psu.edu/thv102/)
% -----------------------------------------------
if nargin == 0 % test mode
dataset = 'myYaleB';
N_train = 10;
[~, Y_train, Y_test, label_train, label_test] = ...
train_test_split(dataset, N_train);
k = 8;
k0 = 5;
lambda = 0.001;
eta = 0.01;
end
opts.k = k;
opts.k0 = k0;
C = max(label_test);
D_range_ext = [k*(0:C), k*C + k0];
opts.lambda = lambda;
opts.eta = eta;
train_range = label_to_range(label_train);
opts.show = false;
opts.max_iter = 5;
opts.verbal = true;
opts = initOpts(opts);
%% ========= Train ==============================
[D, X, rt] = DLCOPAR(Y_train, train_range, opts);
%% ========= test ==============================
acc = [];
for vgamma = [0.0001, 0.001, 0.005, 0.01]
opts.gamma = vgamma;
fprintf('gamma %5f\n', vgamma);
opts.classify_mode = 'LC';
pred = DLCOPAR_pred(Y_test, D, D_range_ext, opts);
acc = [acc double(sum(pred == label_test))/numel(label_test)];
fprintf('LC mode, acc = %5f\n', acc(end));

opts.classify_mode = 'GC';
pred = DLCOPAR_pred(Y_test, D, D_range_ext, opts);
acc = [acc double(sum(pred == label_test))/numel(label_test)];
fprintf('GC mode, acc = %5f\n', acc(end));
end
end
41 changes: 6 additions & 35 deletions DLCOPAR_top.m
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,22 @@
addpath('ODL')
%% test mode
if nargin == 0
dataset = 'myARgender';
N_train = 350;
k = 20;
k0 = 5;
dataset = 'myYaleB';
N_train = 10;
k = 8;
k0 = 5;
lambda = 0.001;
eta = 0.01;
end
%%
%% get data
t = getTimeStr();
[dataset, Y_train, Y_test, label_train, label_test] = ...
train_test_split(dataset, N_train);
%% main
[acc, rt] = DLCOPAR_wrapper(Y_train, label_train, Y_test , label_test, ...
k, k0, lambda, eta);
disp(rt);
%% output filename
if ~exist('results', 'dir')
mkdir('results');
end
Expand All @@ -44,36 +45,6 @@
fn = fullfile('results', 'DLCOPAR', strcat(dataset, '_N_', ...
num2str(N_train), '_k_', num2str(k), '_k0_', num2str(k0), ...
'_l_', num2str(lambda), '_e_', num2str(eta), '_', t, '.mat'));
%% options for DLCOPAR
opts.k = k;
opts.k0 = k0;
C = max(label_test);
D_range_ext = [k*(0:C), k*C + k0];
opts.lambda = lambda;
opts.eta = eta;
train_range = label_to_range(label_train);
opts.show = false;
opts.max_iter = 100;
opts.verbal = true;
opts = initOpts(opts);
%% ========= Train ==============================
[D, X, rt] = DLCOPAR(Y_train, train_range, opts);
%% ========= test ==============================
acc = [];
for vgamma = [0.0001, 0.001, 0.005, 0.01]
opts.gamma = vgamma;
fprintf('gamma %5f\n', vgamma);
opts.classify_mode = 'LC';
pred = DLCOPAR_pred(Y_test, D, D_range_ext, opts);
acc = [acc double(sum(pred == label_test))/numel(label_test)];
fprintf('LC mode, acc = %5f\n', acc(end));

opts.classify_mode = 'GC';
pred = DLCOPAR_pred(Y_test, D, D_range_ext, opts);
acc = [acc double(sum(pred == label_test))/numel(label_test)];
fprintf('GC mode, acc = %5f\n', acc(end));
save(fn, 'acc', 'rt');
end
disp(fn);
save(fn, 'acc', 'rt');
best_acc = max(acc);
Expand Down
38 changes: 38 additions & 0 deletions DLSI/DLSI_wrapper.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
function [acc, rt] = DLSI_wrapper(Y_train, label_train, Y_test , label_test, ...
k, lambda, eta)
% function acc = SRC_wrapper(Y_train, range_train, Y_test , range_test, lambda)
% Description : SRC
% INPUT:
% dataset: name of the dataset stored in 'data', excluding '.mat'
% N_trn: number of training images per class
% lambda : regularization parameter lambda
% -----------------------------------------------
% Author: Tiep Vu, [email protected], 5/11/2016
% (http://www.personal.psu.edu/thv102/)
% -----------------------------------------------
if nargin == 0 % test mode
dataset = 'myYaleB';
N_train = 10;
[~, Y_train, Y_test, label_train, label_test] = ...
train_test_split(dataset, N_train);
k = 8;
lambda = 0.001;
eta = 0.01;
end
C = max(label_train);
D_range = k*(0:C);
opts.lambda = lambda;
opts.eta = eta;
opts.D_range = D_range;
opts.show_cost = 0;
train_range = label_to_range(label_train);
opts.show = 0;
opts.verbal = true;
opts.max_iter = 100;
%% ========= Train ==============================
[D, ~, rt] = DLSI(Y_train, train_range, opts);
%% ========= test ==============================
opts.verbal = false;
pred = DLSI_pred(Y_test, D, opts);
acc = double(sum(pred == label_test))/numel(label_test);
end
29 changes: 5 additions & 24 deletions DLSI_top.m
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,9 @@
addpath('ODL')
%% test mode
if nargin == 0
dataset = 'myARgender';
N_train = 350;
k = 25;
dataset = 'myYaleB';
N_train = 10;
k = 8;
k0 = 5;
N_train = 3;
k = 2;
lambda = 0.001;
eta = 0.01;
end
Expand All @@ -41,24 +37,9 @@
'_k_', num2str(k), '_l_', num2str(lambda), '_e_', num2str(eta), '_', ...
t, '.mat'));
disp(fn);

C = max(label_train);
D_range = k*(0:C);
opts.lambda = lambda;
opts.eta = eta;
opts.D_range = D_range;
opts.show_cost = 0;
train_range = label_to_range(label_train);
opts.show = 0;
opts.verbal = true;
opts.max_iter = 100;
%% ========= Train ==============================
[D, X, rt] = DLSI(Y_train, train_range, opts);
%% ========= test ==============================
opts.verbal = false;
pred = DLSI_pred(Y_test, D, opts);
acc = double(sum(pred == label_test))/numel(label_test);
disp(['acc = ', num2str(acc)]);
[acc, rt] = DLSI_wrapper(Y_train, label_train, Y_test , label_test, ...
k, lambda, eta);
disp(acc);
disp(fn);
save(fn, 'acc', 'rt');
best_acc = acc;
Expand Down
41 changes: 4 additions & 37 deletions FDDL_top.m
Original file line number Diff line number Diff line change
Expand Up @@ -16,31 +16,13 @@
lambda1 = 0.001;
lambda2 = 0.05;
end

%% get data
t = getTimeStr();
[dataset, Y_train, Y_test, label_train, label_test] = train_test_split(...
dataset, N_train);
%% Parameter preparation
fprintf('starting... %s\n', dataset) ;
C = max(label_train);
k0 = 0;
opts.N = N_train;
opts.k = k;
opts.k0 = 0;
opts.show_cost = 0;
opts.lambda1 = lambda1;
opts.lambda2 = lambda2;
opts.lambda3 = 0;
opts.D_range = k*(0:C);
opts.D_range_ext = [opts.D_range k*C+k0];
opts.initmode = 'normal';
opts.max_iter = 100;
opts = initOpts(opts);
opts.verbal = true;
opts.tol = 1e-8;
%% Train
[D, ~, X, X0, CoefM, ~, opts, rt] = ...
LRSDL(Y_train, label_train, opts);
%% main
[acc, rt] = FDDL_wrapper(Y_train, label_train, Y_test , label_test, ...
k, lambda1, lambda2)
fprintf('rt = %5.1f\n', rt);
%% output filename
if ~exist('results', 'dir')
Expand All @@ -53,21 +35,6 @@
'_N_', num2str(N_train), '_k_', num2str(k),'_l1_', ...
num2str(lambda1), '_l2_', num2str(lambda2),'_', t, '.mat'));
disp(fn);
%%
X1 = [X; X0];
Y_range = label_to_range(label_train);
C = max(label_train);
opts.verbal = 0;
opts.weight = 0.1;
acc = [];
for vgamma = [0.0001, 0.001, 0.01, 0.1]
opts.gamma = vgamma;
pred = FDDL_pred(Y_test, D, CoefM, opts);
acc1 = double(numel(find(pred == label_test)))/...
numel(label_test);
fprintf('gamma = %.4f, acc = %.4f\n', vgamma, acc1);
acc = [acc acc1];
end
save(fn, 'acc', 'rt');
best_acc = max(acc);
end
Expand Down
Loading

0 comments on commit 2f8b94b

Please sign in to comment.