📄 init.m
字号:
function [model, options, gammas] = init( counts, T, options);model.T = T;[model.W, model.D] = size( counts );model.total = sum(counts(:));% initialize the optionsif ~isfield(options,'min_change'); options.min_change = 1e-4; end;if ~isfield(options,'plot'); options.plot = 0; end;if ~isfield(options,'var_gamma'); options.var_gamma =1; end;if ~isfield(options,'alpha_sym'); options.alpha_sym = 1; end;if ~isfield(options,'learn_alpha'); options.learn_alpha=1; end;if ~isfield(options,'var_beta'); options.var_beta =1; end;if ~isfield(options,'eta_sym'); options.eta_sym = 1; end;if ~isfield(options,'learn_eta'); options.learn_eta=1; end;if ~isfield(options,'mask'); options.mask = ones(model.T,model.D); end;if ~isfield(options,'learn_topics');options.learn_topics=1; end;if isfield(options,'model'); model = options.model; fprintf('--> Initializing from given model, and ');if options.learn_topics==0; fprintf('not ');end; fprintf('updating the topics.\n');end;if ~options.var_beta; options.learn_eta=0; end;if ~options.var_gamma; options.learn_alpha=0;end;fprintf('--> LDA variational inference started with %d documents and vocabulary of size %d\n',model.D,model.W);fprintf(' using %d topics and %f minimal relative change.\n',model.T,options.min_change);fprintf('--> Total number of words in data: %d (%.2f on average per document)\n\n',model.total, model.total/model.D);% initialize the gammastmp = dirichlet_sample(ones(model.T,1),model.D);if ~options.var_gamma; gammas.el = log(normalize(tmp,1)+eps);else gammas.dp = normalize(eps+tmp,1)*model.total/model.D; gammas.el = digamma( gammas.dp(:,:) ) - repmat( digamma ( sum( gammas.dp(:,:),1) ), model.T, 1); endgammas.ex = exp( gammas.el );if ~isfield(options,'model'); tmp = dirichlet_sample(ones(model.W,1),model.T); if ~options.var_beta; model.beta.dp = normalize(tmp,1); model.beta.el = log(model.beta.dp+eps); else model.beta.dp = normalize(eps + tmp,1)*model.total/model.T; model.beta.el = digamma(model.beta.dp) - repmat( digamma(sum(model.beta.dp,1)) ,model.W, 1); endendmodel.beta.ex = exp( model.beta.el );model.eta = ones(model.W,1); % non-informative priormodel.alpha = ones(model.T,1); % non-informative prior
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -