def __init__(self, model): self.model = model.copy() init_np_func = np.ones self.factors_adj_to_ = { var: self.model.get_adj_factors(var) for var in self.model.variables } self.messages = dict() for fac in model.factors: for var in fac.variables: self.messages[(fac, var)] = Factor.initialize_with_( default_message_name(), [var], init_np_func, model.get_cardinality_for_(var)) self.messages[(fac, var)].normalize() for fac in model.factors: for var in fac.variables: self.messages[(var, fac)] = Factor.initialize_with_( default_message_name(), [var], init_np_func, model.get_cardinality_for_(var)) self.messages[(var, fac)].normalize()
def __init__(self, model, **kwargs): self.model = model.copy() mean_field_init_method = kwargs.get('mean_field_init_method') if mean_field_init_method == 'random': init_np_func = np.ones elif mean_field_init_method == 'uniform': init_np_func = np.random.random else: init_np_func = np.ones self.mean_fields = {} for var in self.model.variables: self.mean_fields[var] = Factor.initialize_with_(default_message_name(), [var], init_np_func, model.get_cardinality_for_(var)) self.mean_fields[var].normalize()