To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Revision:

root / _FullBNT / BNT / CPDs / @mlp_CPD / maximize_params.m @ 8:b5b38998ef3b

History | View | Annotate | Download (1.12 KB)

1
function CPD = maximize_params(CPD, temp)
2
% MAXIMIZE_PARAMS Find ML params of an MLP using Scaled Conjugated Gradient (SCG)
3
% CPD = maximize_params(CPD, temperature)
4
% temperature parameter is ignored
5

    
6
if ~adjustable_CPD(CPD), return; end
7
options = foptions;
8

    
9
% options(1) >= 0 means print an annoying message when the max. num. iter. is reached
10
if CPD.verbose
11
  options(1) = 1;
12
else
13
  options(1) = -1;
14
end
15
%options(1) = CPD.verbose;
16

    
17
options(2) = CPD.wthresh;
18
options(3) = CPD.llthresh;
19
options(14) = CPD.max_iter;
20

    
21
dpsz=length(CPD.mlp);
22

    
23
for i=1:dpsz
24
    mask=[];
25
    mask=find(CPD.eso_weights(:,:,i)>0);    % for adapting the parameters we use only positive weighted example
26
    if  ~isempty(mask),
27
        CPD.mlp{i} = netopt_weighted(CPD.mlp{i}, options, CPD.parent_vals(mask',:), CPD.self_vals(mask',:,i), CPD.eso_weights(mask',:,i), 'scg');
28
        
29
        CPD.W1(:,:,i)=CPD.mlp{i}.w1;        % update the parameters matrix
30
        CPD.b1(i,:)=CPD.mlp{i}.b1;          %
31
        CPD.W2(:,:,i)=CPD.mlp{i}.w2;        % update the parameters matrix
32
        CPD.b2(i,:)=CPD.mlp{i}.b2;          %
33
    end
34
end