about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/BNT/examples/dynamic/HHMM/Map/learn_map.m
blob: ac36586aedc5fb25084e38c3d4170ae98da799a1 (plain)
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
seed = 1;
rand('state', seed);
randn('state', seed);

obs_model = 'unique';  % each cell has a unique label (essentially fully observable)
%obs_model = 'four'; % each cell generates 4 observations, NESW

% Generate the true network, and a randomization of it
realnet = mk_map_hhmm('p', 0.9, 'obs_model', obs_model);
rndnet = mk_rnd_map_hhmm('obs_model', obs_model);
eclass = realnet.equiv_class;
U = 1; A = 2; C = 3; F = 4; onodes = 5;

ss = realnet.nnodes_per_slice;
T = 100;
evidence = sample_dbn(realnet, 'length', T);
ev = cell(ss,T);
ev(onodes,:) = evidence(onodes,:);

infeng = jtree_dbn_inf_engine(rndnet);

if 0
% suppose we do not observe the final finish node, but only know 
% it is more likely to be on that off
ev2 = ev;
infeng = enter_evidence(infeng, ev2, 'soft_evidence_nodes', [F T], 'soft_evidence',  {[0.3 0.7]'});
end


learnednet = learn_params_dbn_em(infeng, {evidence}, 'max_iter', 5);

disp('real model')
disp_map_hhmm(realnet)

disp('learned model')
disp_map_hhmm(learnednet)

disp('rnd model')
disp_map_hhmm(rndnet)