wolffd@0: % Compare the speeds of various inference engines on a coupled HMM wolffd@0: wolffd@0: N = 2; wolffd@0: Q = 2; wolffd@0: rand('state', 0); wolffd@0: randn('state', 0); wolffd@0: discrete = 1; wolffd@0: if discrete wolffd@0: Y = 2; % size of output alphabet wolffd@0: else wolffd@0: Y = 1; wolffd@0: end wolffd@0: coupled = 1; wolffd@0: [bnet, onodes] = mk_chmm(N, Q, Y, discrete, coupled); wolffd@0: ss = N*2; wolffd@0: wolffd@0: T = 3; wolffd@0: wolffd@0: wolffd@0: engine = {}; wolffd@0: tic; engine{end+1} = jtree_dbn_inf_engine(bnet, 'observed', onodes); toc wolffd@0: %tic; engine{end+1} = jtree_ndxSD_dbn_inf_engine(bnet, onodes); toc wolffd@0: %tic; engine{end+1} = jtree_ndxB_dbn_inf_engine(bnet, onodes); toc wolffd@0: engine{end+1} = hmm_inf_engine(bnet, onodes); wolffd@0: %engine{end+1} = dhmm_inf_engine(bnet, onodes); wolffd@0: tic; engine{end+1} = jtree_unrolled_dbn_inf_engine(bnet, T, onodes); toc wolffd@0: wolffd@0: %engine{end+1} = bk_inf_engine(bnet, 'ff', onodes); wolffd@0: %engine{end+1} = loopy_dbn_inf_engine(bnet, onodes); wolffd@0: wolffd@0: exact = [1 2 3]; wolffd@0: wolffd@0: filter = 0; wolffd@0: single = 0; wolffd@0: maximize = 0; wolffd@0: wolffd@0: [err, time, engine] = cmp_inference(bnet, onodes, engine, exact, T, filter, single, maximize); wolffd@0: %err = cmp_learning(bnet, onodes, engine, exact, T); wolffd@0: wolffd@0: