-
Notifications
You must be signed in to change notification settings - Fork 6
/
plot_results.m
65 lines (51 loc) · 1.77 KB
/
plot_results.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
function plot_results(varargin)
%PLOT_RESULTS Plots all results for a given dataset.
% Name-value pairs are supported, listed below.
% E.g.: plot_results('dataset', 'imagenet', 'set', 'val')
opts.dataset = 'cifar'; % choose dataset
opts.set = 'train'; % train or val
opts.var = 'err'; % err or obj (error/objective)
opts.save = false; % if true, saves as a PDF file in the base directory
opts.baseDir = [vl_rootnn() '/data/curveball/<dataset>']; % results location
opts.subdir = ''; % optional subdirectory
opts = vl_argparse(opts, varargin);
% compose directory where experiments are located
base = strrep(opts.baseDir, '<dataset>', opts.dataset);
base = [base '/' opts.subdir];
% list experiments (folders)
folders = dir(base);
figure(10);
clf();
hold('on');
ax = gca();
set(ax, 'lineStyleOrder', {'-','--','-.',':','*','+'});
for i = 1:numel(folders)
name = folders(i).name;
if folders(i).isdir && ~strncmp(name, '.', 1)
% try to load final results first
filename = [base '/' name '/results.mat'];
if ~exist(filename, 'file')
% if it doesn't exist, look for the most recent checkpoint
filename = models.checkpoint([base '/' name '/epoch-*.mat']);
end
if ~isempty(filename)
% load result statistics
data = load(filename, 'stats');
% get the relevant curve
values = data.stats.values(opts.set, opts.var);
% display it
plot(values, 'DisplayName', name, 'LineWidth',2);
end
end
end
% make plots look nice
legend('show');
grid('on');
xlabel('Epochs');
ylabel([opts.set ' ' opts.var]);
% save to PDF
if opts.save
filename = [base '/results.pdf'];
print(10, filename, '-dpdf');
end
end