-
Notifications
You must be signed in to change notification settings - Fork 6
/
experiment_cnn_momentum.m
58 lines (46 loc) · 1.45 KB
/
experiment_cnn_momentum.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
clc
clear all
close all
format compact
global LOG
p = config('cnn_momentum.log');
p.skip_10fold = true;
% matlab CNN
p.mat_cnn_layers = [imageInputLayer([p.cnn_img_size 1]);
convolution2dLayer([4 4],16);
reluLayer();
maxPooling2dLayer(2,'Stride',2);
fullyConnectedLayer(4);
softmaxLayer();
classificationLayer()];
%% run experiment
outname = 'cnn_momentum';
momentums = 0.01:0.1:1;
results = cell(1, numel(momentums));
elapsed = [];
t_init = tic();
for i=1:numel(momentums)
t0 = tic();
p.mat_cnn_options = trainingOptions(...
'sgdm', ...
'InitialLearnRate', 0.01, ...
'Momentum', momentums(i), ...
'Verbose', true, ...
'Shuffle', 'once', ...
'MiniBatchSize', 128, ...
'MaxEpochs', 500);
LOG.info('Begin momentum = %f evaluation', momentums(i));
[x, xfold] = run_experiment(@mean_signal_power, @classify_matcnn, p);
r = {};
r.momentum = momentums(i);
r.feats = @mean_signal_power;
r.class = @classify_matcnn;
r.x = x;
r.xfold = xfold;
results{i} = r;
save(sprintf('cnn_results/%s.mat', outname), 'results');
elapsed = mean([elapsed toc(t0)]);
LOG.info('Evaluation step %d/%d done. Elapsed: %.4f sec, approx. time remaining: %.4f sec', ...
i, numel(momentums), elapsed, (numel(momentums)-i) * elapsed);
end
LOG.info('Done. Total time: %.4f sec', toc(t_init));