📄 pearl_dbn_inf_engine.m
字号:
function engine = pearl_dbn_inf_engine(bnet, varargin)% LOOPY_DBN_INF_ENGINE Loopy Pearl version of forwards-backwards% engine = loopy_dbn_inf_engine(bnet, ...)%% Optional arguments% 'max_iter' - specifies the max num. forward-backward passes to perform [1]% 'tol' - as in loopy_pearl [1e-3]% 'momentum' - as in loopy_pearl [0]error('pearl_dbn does not work yet')max_iter = 1;tol = 1e-3;momentum = 0;if nargin >= 2 args = varargin; nargs = length(args); for i=1:2:nargs switch args{i}, case 'max_iter', max_iter = args{i+1}; case 'tol', tol = args{i+1}; case 'momentum', momentum = args{i+1}; end endend engine.max_iter = max_iter;engine.tol = tol;engine.momentum = momentum;engine.pearl_engine = [];engine.T = [];engine.ss = length(bnet.intra);engine.marginal = [];engine.evidence = [];engine.msg = [];engine.parent_index = [];engine.child_index = [];%[engine.parent_index, engine.child_index] = mk_pearl_msg_indices(bnet); % need to unroll firstss = length(bnet.intra);engines.ss = ss;onodes = bnet.observed;hnodes = mysetdiff(1:ss, onodes);obschild = zeros(1,ss);for i=hnodes(:)' %ocs = myintersect(children(bnet.dag, i), onodes); ocs = children(bnet.intra, i); assert(length(ocs) <= 1); if length(ocs)==1 obschild(i) = ocs(1); endendengine.obschild = obschild;engine.mult_self_ndx = [];engine.mult_parent_ndx = [];engine.marg_self_ndx = [];engine.marg_parent_ndx = [];engine = class(engine, 'loopy_dbn_inf_engine', inf_engine(bnet));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -