def sampler(self, n_particles, n_visible=None, rng=7823748): """Return an `HMC_sampler` that will draw samples from the distribution over visible units specified by this RBM. :param n_particles: this many parallel chains will be simulated. :param rng: seed or numpy RandomState object to initialize particles, and to drive the simulation. """ #TODO: why not expose all HMC arguments somehow? #TODO: Consider returning a sample kwargs for passing to HMC_sampler? if not hasattr(rng, 'randn'): rng = np.random.RandomState(rng) if n_visible is None: n_visible = self.n_visible_units() rval = HMC_sampler.new_from_shared_positions( shared_positions=sharedX(rng.randn(n_particles, n_visible), name='particles'), energy_fn=self.free_energy_given_v, seed=int(rng.randint(2**30))) return rval
def CD1_sampler(self, v, n_particles, n_visible=None, rng=8923984): """Return a symbolic negative-phase particle obtained by simulating the Hamiltonian associated with the energy function. """ #TODO: why not expose all HMC arguments somehow? if not hasattr(rng, 'randn'): rng = np.random.RandomState(rng) if n_visible is None: n_visible = self.n_visible_units() # create a dummy hmc object because we want to use *some* of it hmc = HMC_sampler.new_from_shared_positions( shared_positions=v, # v is not shared, so some functionality will not work energy_fn=self.free_energy_given_v, seed=int(rng.randint(2**30)), shared_positions_shape=(n_particles,n_visible), compile_simulate=False) updates = dict(hmc.updates()) final_p = updates.pop(v) return hmc, final_p, updates
def CD1_sampler(self, v, n_particles, n_visible=None, rng=8923984): """Return a symbolic negative-phase particle obtained by simulating the Hamiltonian associated with the energy function. """ #TODO: why not expose all HMC arguments somehow? if not hasattr(rng, 'randn'): rng = np.random.RandomState(rng) if n_visible is None: n_visible = self.n_visible_units() # create a dummy hmc object because we want to use *some* of it hmc = HMC_sampler.new_from_shared_positions( shared_positions= v, # v is not shared, so some functionality will not work energy_fn=self.free_energy_given_v, seed=int(rng.randint(2**30)), shared_positions_shape=(n_particles, n_visible), compile_simulate=False) updates = dict(hmc.updates()) final_p = updates.pop(v) return hmc, final_p, updates
def sampler(self, n_particles, n_visible=None, rng=7823748): """Return an `HMC_sampler` that will draw samples from the distribution over visible units specified by this RBM. :param n_particles: this many parallel chains will be simulated. :param rng: seed or numpy RandomState object to initialize particles, and to drive the simulation. """ #TODO: why not expose all HMC arguments somehow? #TODO: Consider returning a sample kwargs for passing to HMC_sampler? if not hasattr(rng, 'randn'): rng = np.random.RandomState(rng) if n_visible is None: n_visible = self.n_visible_units() rval = HMC_sampler.new_from_shared_positions( shared_positions = sharedX( rng.randn( n_particles, n_visible), name='particles'), energy_fn=self.free_energy_given_v, seed=int(rng.randint(2**30))) return rval