Beispiel #1
0
    def run(self, r, niters=10000):
        """Run the specified mixturemodel kernel for `niters`, in a single
        thread.

        Parameters
        ----------
        r : random state
        niters : int

        """
        validator.validate_type(r, rng, param_name='r')
        validator.validate_positive(niters, param_name='niters')
        inds = xrange(len(self._defn.domains()))
        models = [bind(self._latent, i, self._views) for i in inds]
        for _ in xrange(niters):
            for name, config in self._kernel_config:
                if name == 'assign':
                    for idx in config.keys():
                        gibbs.assign(models[idx], r)
                elif name == 'assign_resample':
                    for idx, v in config.iteritems():
                        gibbs.assign_resample(models[idx], v['m'], r)
                elif name == 'slice_cluster_hp':
                    for idx, v in config.iteritems():
                        slice.hp(models[idx], r, cparam=v['cparam'])
                elif name == 'grid_relation_hp':
                    gibbs.hp(models[0], config, r)
                elif name == 'slice_relation_hp':
                    slice.hp(models[0], r, hparams=config['hparams'])
                elif name == 'theta':
                    slice.theta(models[0], r, tparams=config['tparams'])
                else:
                    assert False, "should not be reached"
Beispiel #2
0
    def run(self, r, niters=10000):
        """Run the specified mixturemodel kernel for `niters`, in a single
        thread.

        Parameters
        ----------
        r : random state
        niters : int

        """
        validator.validate_type(r, rng, param_name='r')
        validator.validate_positive(niters, param_name='niters')
        model = bind(self._latent, self._view)
        for _ in xrange(niters):
            for name, config in self._kernel_config:
                if name == 'assign':
                    gibbs.assign(model, r)
                elif name == 'assign_resample':
                    gibbs.assign_resample(model, config['m'], r)
                elif name == 'grid_feature_hp':
                    gibbs.hp(model, config, r)
                elif name == 'slice_feature_hp':
                    slice.hp(model, r, hparams=config['hparams'])
                elif name == 'slice_cluster_hp':
                    slice.hp(model, r, cparam=config['cparam'])
                elif name == 'theta':
                    slice.theta(model, r, tparams=config['tparams'])
                else:
                    assert False, "should not be reach"
def test_one_binary_nonconj_kernel():
    # 1 domain, 1 binary relation
    domains = [4]

    def mk_relations(model):
        return [((0, 0), model)]

    relsize = (domains[0], domains[0])
    data = [relation_numpy_dataview(
        ma.array(
            np.random.choice([False, True], size=relsize),
            mask=np.random.choice([False, True], size=relsize)))]
    kernel = lambda s, r: assign_resample(s, 10, r)
    _test_convergence(
        domains, data, mk_relations(bb), mk_relations(bb), kernel)
Beispiel #4
0
def test_one_binary_nonconj_kernel():
    # 1 domain, 1 binary relation
    domains = [4]

    def mk_relations(model):
        return [((0, 0), model)]

    relsize = (domains[0], domains[0])
    data = [
        relation_numpy_dataview(
            ma.array(np.random.choice([False, True], size=relsize),
                     mask=np.random.choice([False, True], size=relsize)))
    ]
    kernel = lambda s, r: assign_resample(s, 10, r)
    _test_convergence(domains, data, mk_relations(bb), mk_relations(bb),
                      kernel)
 def kernel(s, r):
     assign_resample(s, 10, r)
     theta(s, r, tparams=params)
Beispiel #6
0
 def kernel(s, r):
     assign_resample(s, 10, r)
     theta(s, r, tparams=params)