def set_vb_param(self, phi_): #unflatten and softmax self.phi_ = phi_.reshape(self.N, self.K) self.phi, logphi, self.H = softmax_weave(self.phi_) self.phi_hat = self.phi.sum(0) self.Hgrad = -logphi if self.prior_Z == 'DP': self.phi_tilde_plus_hat = self.phi_hat[::-1].cumsum()[::-1] self.phi_tilde = self.phi_tilde_plus_hat - self.phi_hat self.do_computations()
def set_vb_param(self,phi_): #unflatten and softmax self.phi_ = phi_.reshape(self.N,self.K) self.phi, logphi, self.H = softmax_weave(self.phi_) self.phi_hat = self.phi.sum(0) self.Hgrad = -logphi if self.prior_Z=='DP': self.phi_tilde_plus_hat = self.phi_hat[::-1].cumsum()[::-1] self.phi_tilde = self.phi_tilde_plus_hat - self.phi_hat self.do_computations()
def set_vb_param(self,phi_): """ Accept a vector representing the variatinoal parameters, and reshape it into self.phi """ self.phi_ = phi_.reshape(self.N,self.K) self.phi, logphi, self.H = softmax_weave(self.phi_) self.phi_hat = self.phi.sum(0) self.Hgrad = -logphi if self.prior_Z=='DP': self.phi_tilde_plus_hat = self.phi_hat[::-1].cumsum()[::-1] self.phi_tilde = self.phi_tilde_plus_hat - self.phi_hat self.do_computations()
def set_vb_param(self,phi_): """ Accept a vector representing the variatinoal parameters, and reshape it into self.phi """ self.phi_ = phi_.reshape(self.N, self.K) self.phi, logphi, self.H = softmax_weave(self.phi_) self.phi_hat = self.phi.sum(0) self.Hgrad = -logphi if self.prior_Z == 'DP': self.phi_tilde_plus_hat = self.phi_hat[::-1].cumsum()[::-1] self.phi_tilde = self.phi_tilde_plus_hat - self.phi_hat self.do_computations()
def __init__(self, N, K, prior_Z='symmetric', alpha=1.0, name='col_mix'): """ Arguments ========= N: the number of data K: the (initial) number of cluster (or truncation) prior_Z - either 'symmetric' or 'DP', specifies whether to use a symmetric Dirichlet prior for the clusters, or a (truncated) Dirichlet Process. alpha: parameter of the Dirichelt (process) """ CollapsedVB.__init__(self, name) self.N, self.K = N, K assert prior_Z in ['symmetric','DP'] self.prior_Z = prior_Z self.alpha = alpha #random initial conditions for the vb parameters self.phi_ = np.random.randn(self.N, self.K) self.phi, logphi, self.H = softmax_weave(self.phi_) self.phi_hat = self.phi.sum(0) self.Hgrad = -logphi if self.prior_Z == 'DP': self.phi_tilde_plus_hat = self.phi_hat[::-1].cumsum()[::-1] self.phi_tilde = self.phi_tilde_plus_hat - self.phi_hat