wolffd@0
|
1 % Compare the speeds of various inference engines on the water DBN
|
wolffd@0
|
2 seed = 0;
|
wolffd@0
|
3 rand('state', seed);
|
wolffd@0
|
4 randn('state', seed);
|
wolffd@0
|
5
|
wolffd@0
|
6 %bnet = mk_water_dbn;
|
wolffd@0
|
7 bnet = mk_orig_water_dbn;
|
wolffd@0
|
8
|
wolffd@0
|
9 T = 3;
|
wolffd@0
|
10 engine = {};
|
wolffd@0
|
11 %engine{end+1} = smoother_engine(jtree_2TBN_inf_engine(bnet));
|
wolffd@0
|
12 %engine{end+1} = smoother_engine(hmm_2TBN_inf_engine(bnet));
|
wolffd@0
|
13 %engine{end+1} = jtree_dbn_inf_engine(bnet);
|
wolffd@0
|
14 engine{end+1} = jtree_unrolled_dbn_inf_engine(bnet, T);
|
wolffd@0
|
15 engine{end+1} = cbk_inf_engine(bnet, 'clusters', {[1],[2],[3],[4],[5],[6],[7],[8]}); %ff
|
wolffd@0
|
16 engine{end+1} = cbk_inf_engine(bnet, 'clusters', {[1 2],[3 4 5 6],[7 8]}); %manually designed marginally independent by BK
|
wolffd@0
|
17 engine{end+1} = cbk_inf_engine(bnet, 'clusters', {[1:5], [3:7], [7:8]}); %manually designed conditionally independent by BK
|
wolffd@0
|
18 engine{end+1} = cbk_inf_engine(bnet, 'clusters', {[1 3], [2 3 7], [3 5], [3 4 7], [6 7 8]}); %automatically found using TJTs offline
|
wolffd@0
|
19 engine{end+1} = cbk_inf_engine(bnet, 'clusters', {[1 3 5], [2 3 5 7], [3 4 7], [4 6 7], [6 7 8]}); %automatically found using TJTs offline
|
wolffd@0
|
20 engine{end+1} = cbk_inf_engine(bnet, 'clusters', {[1 3 4 5], [2 3 4 7 8], [4 6 7 8]}); %automatically found using TJTs offline
|
wolffd@0
|
21
|
wolffd@0
|
22 % bk_inf_engine yields exactly the same results for the marginally independent cases.
|
wolffd@0
|
23 %engine{end+1} = bk_inf_engine(bnet, 'clusters', 'ff');
|
wolffd@0
|
24 %engine{end+1} = bk_inf_engine(bnet, 'clusters', { [1 2], [3 4 5 6], [7 8] });
|
wolffd@0
|
25
|
wolffd@0
|
26
|
wolffd@0
|
27 inf_time = cmp_inference_dbn(bnet, engine, T, 'exact', 1)
|
wolffd@0
|
28 learning_time = cmp_learning_dbn(bnet, engine, T, 'exact', 1) |