This sampler generates i.i.d. samples from . In order to perform exact sampling, is precomputed an all the possible values of the quantum numbers . This sampler has thus an exponential cost with the number of degrees of freedom, and cannot be used for large systems, where Metropolis-based sampling are instead a viable option.
Constructs a new
ExactSampler given a machine.
|machine||netket.machine.Machine||A machine used for the sampling. The probability distribution being sampled from is .|
Exact sampling from a RBM machine in a 1D lattice of spin 1/2
>>> import netket as nk >>> >>> g=nk.graph.Hypercube(length=8,n_dim=1,pbc=True) >>> hi=nk.hilbert.Spin(s=0.5,graph=g) >>> >>> # RBM Spin Machine >>> ma = nk.machine.RbmSpin(alpha=1, hilbert=hi) >>> >>> sa = nk.sampler.ExactSampler(machine=ma)
Resets the state of the sampler, including the acceptance rate statistics and optionally initializing at random the visible units being sampled.
Seeds the random number generator used by the
|base_seed||int||The base seed for the random number generator|
Performs a sampling sweep. Typically a single sweep consists of an extensive number of local moves.
|acceptance||numpy.array||The measured acceptance rate for the sampling. In the case of rejection-free sampling this is always equal to 1.|
|hilbert||netket.hilbert||The Hilbert space used for the sampling.|
|machine||netket.machine||The machine used for the sampling.|
|visible||numpy.array||The quantum numbers being sampled, and distributed according to|