Пример #1
0
    def __init__(self,
                 num_states,
                 gamma_a_0,
                 gamma_b_0,
                 alpha_a_0,
                 alpha_b_0,
                 beta=None,
                 trans_matrix=None,
                 **kwargs):
        if num_states is None:
            assert beta is not None or trans_matrix is not None
            self.N = len(beta) if beta is not None else trans_matrix.shape[0]
        else:
            self.N = num_states

        self.beta_obj = MultinomialAndConcentration(a_0=gamma_a_0,
                                                    b_0=gamma_b_0,
                                                    K=self.N,
                                                    weights=beta)
        self.alpha_obj = GammaCompoundDirichlet(self.N, alpha_a_0, alpha_b_0)

        # NOTE: we don't want to call WeakLimitHDPHMMTransitions.__init__
        # because it sets beta_obj in a different way
        _HMMTransitionsBase.__init__(self,
                                     num_states=self.N,
                                     alphav=self.alpha * self.beta,
                                     trans_matrix=trans_matrix,
                                     **kwargs)
Пример #2
0
 def __init__(self,num_states,alpha_a_0,alpha_b_0,**kwargs):
     self.alpha_obj = GammaCompoundDirichlet(num_states,alpha_a_0,alpha_b_0)
     super(_ConcentrationResamplingMixin,self).__init__(
             num_states=num_states,alpha=self.alpha,**kwargs)