Daniel@0: % Compare the speeds of various inference engines on the water DBN Daniel@0: Daniel@0: [bnet, onodes] = mk_water_dbn; Daniel@0: Daniel@0: T = 3; Daniel@0: Daniel@0: engine = {}; Daniel@0: engine{end+1} = jtree_unrolled_dbn_inf_engine(bnet, T, onodes); Daniel@0: engine{end+1} = hmm_inf_engine(bnet, onodes); Daniel@0: engine{end+1} = frontier_inf_engine(bnet, onodes); Daniel@0: engine{end+1} = jtree_dbn_inf_engine(bnet, onodes); Daniel@0: engine{end+1} = bk_inf_engine(bnet, 'exact', onodes); Daniel@0: Daniel@0: engine{end+1} = bk_inf_engine(bnet, 'ff', onodes); Daniel@0: engine{end+1} = bk_inf_engine(bnet, { [1 2], [3 4 5 6], [7 8] }, onodes); Daniel@0: Daniel@0: N = length(engine); Daniel@0: exact = 1:5; Daniel@0: Daniel@0: Daniel@0: filter = 0; Daniel@0: err = cmp_inference(bnet, onodes, engine, exact, T, filter); Daniel@0: Daniel@0: % elapsed times for enter_evidence (matlab 5.3 on PIII with 256MB running Redhat linux) Daniel@0: Daniel@0: % T = 5, 4/20/00 Daniel@0: % 0.6266 unrolled * Daniel@0: % 0.3490 hmm * Daniel@0: % 1.1743 frontier Daniel@0: % 1.4621 old frontier Daniel@0: % 0.3270 fast frontier * Daniel@0: % 1.3926 jtree Daniel@0: % 1.3790 bk Daniel@0: % 0.4916 fast bk Daniel@0: % 0.4190 fast bk compiled Daniel@0: % 0.3574 fast jtree * Daniel@0: Daniel@0: Daniel@0: err = cmp_learning(bnet, onodes, engine, exact, T); Daniel@0: Daniel@0: % elapsed times for learn_params_dbn_em (matlab 5.3 on PIII with 256MB running Redhat linux) Daniel@0: Daniel@0: % T = 5, 2cases, 2 iter, 4/20/00 Daniel@0: % 3.5750 unrolled Daniel@0: % 3.7475 hmm Daniel@0: % 2.1452 fast frontier Daniel@0: % 2.5724 fast bk compiled Daniel@0: % 2.3387 fast jtree