forked from lawrennd/gp
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgpOptimise.m
59 lines (50 loc) · 1.34 KB
/
gpOptimise.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
function model = gpOptimise(model, display, iters,gradcheck);
% GPOPTIMISE Optimise the inducing variable based kernel.
% FORMAT
% DESC optimises the Gaussian process model for
% a given number of iterations.
% ARG model : the model to be optimised.
% ARG display : whether or not to display while optimisation
% proceeds, set to 2 for the most verbose and 0 for the least
% verbose.
% ARG iters : number of iterations for the optimisation.
% RETURN model : the optimised model.
%
% SEEALSO : scg, conjgrad, gpCreate, gpGradient, gpObjective
%
% COPYRIGHT : Neil D. Lawrence, 2005, 2006
%
% MODIFICATIONS : Carl Henrik Ek, 2008
% GP
if(nargin<4)
gradcheck = false;
if nargin < 3
iters = 2000;
if nargin < 2
display = 1;
end
end
end
params = gpExtractParam(model);
options = optOptions;
if display
options(1) = 1;
if length(params) <= 100 && gradcheck
options(9) = 1;
end
end
options(14) = iters;
if isfield(model, 'optimiser')
optim = str2func(model.optimiser);
else
optim = str2func('conjgrad');
end
if strcmp(func2str(optim), 'optimiMinimize')
% Carl Rasmussen's minimize function
params = optim('gpObjectiveGradient', params, options, model);
else
% NETLAB style optimization.
params = optim('gpObjective', params, options, ...
'gpGradient', model);
end
model = gpExpandParam(model, params);