wolffd@0: % Compare the speeds of various inference engines on a coupled HMM wolffd@0: wolffd@0: N = 3; wolffd@0: Q = 2; wolffd@0: rand('state', 0); wolffd@0: randn('state', 0); wolffd@0: discrete = 0; wolffd@0: if discrete wolffd@0: Y = 2; % size of output alphabet wolffd@0: else wolffd@0: Y = 3; % size of observed vectors wolffd@0: end wolffd@0: coupled = 1; wolffd@0: bnet = mk_chmm(N, Q, Y, discrete, coupled); wolffd@0: %bnet = mk_fhmm(N, Q, Y, discrete); % factorial HMM wolffd@0: ss = length(bnet.node_sizes_slice); wolffd@0: wolffd@0: T = 3; wolffd@0: wolffd@0: USEC = exist('@jtree_C_inf_engine/collect_evidence','file'); wolffd@0: wolffd@0: engine = {}; wolffd@0: engine{end+1} = jtree_dbn_inf_engine(bnet); wolffd@0: %engine{end+1} = jtree_ndx_dbn_inf_engine(bnet, 'ndx_type', 'SD'); wolffd@0: %engine{end+1} = jtree_ndx_dbn_inf_engine(bnet, 'ndx_type', 'D'); wolffd@0: %engine{end+1} = jtree_ndx_dbn_inf_engine(bnet, 'ndx_type', 'B'); wolffd@0: if USEC, engine{end+1} = jtree_C_dbn_inf_engine(bnet); end wolffd@0: engine{end+1} = hmm_inf_engine(bnet); wolffd@0: engine{end+1} = jtree_unrolled_dbn_inf_engine(bnet, T); wolffd@0: wolffd@0: % times in matlab N=4 Q=4 T=5 (* = winner) wolffd@0: % jtree SD B hmm dhmm unrolled wolffd@0: % 0.6266 1.1563 8.3815 0.3069 0.1948* 0.8654 inf wolffd@0: % 0.9057* 2.1522 12.6314 2.6847 2.3107 3.1905 learn wolffd@0: wolffd@0: %engine{end+1} = bk_inf_engine(bnet, 'ff', onodes); wolffd@0: %engine{end+1} = pearl_unrolled_dbn_inf_engine(bnet, T); wolffd@0: wolffd@0: inf_time = cmp_inference_dbn(bnet, engine, T) wolffd@0: learning_time = cmp_learning_dbn(bnet, engine, T) wolffd@0: