NetKet 3.7 (⚙️ In development)#
The underlying extension API for Autoregressive models that can be used with Ancestral/Autoregressive samplers has been simplified and stabilized and will be documented as part of the public API. For most models, you should now inherit from
conditionals_log_psi. For additional performance, implementers can also redefine
conditionalbut this should not be needed in general. This will cause some breaking changes if you were relying on the old undocumented interface #1361.
nk.operator.PauliStringsnow works with non-homogeneous Hilbert spaces, such as those obtained by taking the tensor product of multiple Hilbert spaces.
Fixed a bug where
nk.hilbert.Particle.random_state()could not be jit-compiled, and therefore could not be used in the sampling #1401.
NetKet 3.6 (🏔️ 6 November 2022)#
QGT classes accept a
chunk_sizeparameter that overrides the
chunk_sizeset by the variational state object #1347.
QGTJacobianDense()support diagonal entry regularisation with constant and scale-invariant contributions. They accept a new
diag_scaleargument to pass the scale-invariant component #1352.
Experimental RK solvers now store the error of the last timestep in the integrator state #1328.
Fermion operators are much more efficient and generate fewer connected elements #1279.
NetKet now is completely PEP 621 compliant and does not have anymore a
setup.pyin favour of a
pyproject.tomlbased on hatchling. To install NetKet you should use a recent version of
pipor a compatible tool such as poetry/hatch/flint #1365.
netket.vqs.ExactState.expect_and_grad()returned a scalar while
nk.stats.Statsobject with 0 error. The inconsistency has been addressed and now they both return a
Statsobject. This changes the format of the files logged when running
VMC, which will now store the average under
QGTJacobianDense()is deprecated inf avour the more flexible syntax with
rescale_shift=Falseshould be removed.
rescale_shift=Trueshould be replaced with
The call signature of preconditioners passed to
netket.driver.VMCand other drivers has changed as a consequence of scheduling, and preconditioners should now accept an extra optional argument
step. The old signature is still supported but is deprecated and will eventually be removed #1364.
NetKet 3.5.2 (Bug Fixes) - 30 October 2022#
Autoregressive networks had a default activation function (
selu) that did not act on the imaginary part of the inputs. We now changed that, and the activation function is
reim_selu, which acts independently on the real and imaginary part. This changes nothing for real parameters, but improves the defaults for complex ones #1371.
NetKet 3.5.1 (Bug Fixes)#
Added a new configuration option
nk.config.netket_experimental_disable_ode_jitto disable jitting of the ODE solvers. This can be useful to avoid hangs that might happen when working on GPUs with some particular systems #1304.
NetKet 3.5 (☀️ 18 August 2022)#
This release adds support and needed functions to run TDVP for neural networks with real/non-holomorphic parameters, an experimental HDF5 logger, and an
MCState method to compute the local estimators of an observable for a set of samples.
This release also drops support for older version of flax, while adopting the new interface which completely supports complex-valued neural networks. Deprecation warnings might be raised if you were using some layers from
netket.nn that are now avaiable in flax.
A new, more accurate, estimation of the autocorrelation time has been introduced, but it is disabled by default. We welcome feedback.
local_estimators()has been added, which returns the local estimators
O_loc(s) = 〈s|O|ψ〉 / 〈s|ψ〉(which are known as local energies if
Ois the Hamiltonian). #1179
The permutation equivariant
nk.models.DeepSetRelDistancefor use with particles in periodic potentials has been added together with an example. #1199
HDF5Loghas been added to the experimental submodule. This logger writes log data and variational state variables into a single HDF5 file. #1200
Added a new method
serialize()to store the content of the logger to disk #1255.
nk.callbacks.InvalidLossStoppingwhich stops optimisation if the loss function reaches a
NaNvalue. An optional
patienceargument can be set. #1259
Added a new method
nk.graph.SpaceGroupBuilder.one_arm_irreps()to construct GCNN projection coefficients to project on single-wave-vector components of irreducible representations. #1260.
expect_and_forces()has been added, which can be used to compute the variational forces generated by an operator, instead of only the (real-valued) gradient of an expectation value. This in general is needed to write the TDVP equation or other similar equations. #1261
TDVP now works for real-parametrized wavefunctions as well as non-holomorphic ones because it makes use of
apply_to_id()can be used to apply a permutation (or a permutation group) to one or more lattice indices. #1293
It is now possible to disable MPI by setting the environment variable
NETKET_MPI. This is useful in cases where mpi4py crashes upon load #1254.
The new function
nk.nn.binary_encoding()can be used to encode a set of samples according to the binary shape defined by an Hilbert space. It should be used similarly to
flax.linen.one_hot()and works with non homogeneous Hilbert spaces #1209.
A new method to estimate the correlation time in Markov chain Monte Carlo (MCMC) sampling has been added to the
nk.stats.statistics()function, which uses the full FFT transform of the input data. The new method is not enabled by default, but can be turned on by setting the
NETKET_EXPERIMENTAL_FFT_AUTOCORRELATIONenvironment variable to
1. In the future we might turn this on by default #1150.
NetKet now requires at least Flax v0.5
nk.nn.Dense(dtype=mydtype)and related Modules (
ConvGeneral) are deprecated. Please use
flax.linen.***(param_dtype=mydtype)instead. Before flax v0.5 they did not support complex numbers properly within their modules, but starting with flax 0.5 they now do so we have removed our linear module wrappers and encourage you to use them. Please notice that the
dtypeargument previously used by netket should be changed to
param_dtypeto maintain the same effect. #…
Fixed bug where a
nk.operator.LocalOperatorrepresenting the identity would lead to a crash. #1197
Fix a bug where Fermionic operators
nkx.operator.FermionOperator2ndwould not result hermitian even if they were. #1233
Fix serialization of some arrays with complex dtype in
Fixed bug where the
nk.callbacks.EarlyStoppingcallback would not work as intended when hitting a local minima. #1238
chunk_sizeand the random seed of Monte Carlo variational states are now serialised. States serialised previous to this change can no longer be unserialised #1247
Continuous-space hamiltonians now work correctly with neural networks with complex parameters #1273.
NetKet now works under MPI with recent versions of jax (>=0.3.15) #1291.
NetKet 3.4.2 (BugFixes & DepWarns again)#
Several type promotion bugs that would end up promoting single-precision models to double-precision have been squashed. Those involved
nkx.TDVP#1186 and continuous-space samplers and operators #1187.
nk.operator.LocalLiouvilliannow return connected samples with the same precision (
dtype) as the input samples. This allows to preserve low precision along the computation when using those operators.#1180
nkx.TDVPnow updates the expectation value displayed in the progress bar at every time step. #1182
Fixed bug #1192 that affected most operators (
nk.operator.LocalOperator) constructed on non-homogeneous hilbert spaces. This bug was first introduced in version 3.3.4 and affects all subsequent versions until 3.4.2. #1193
It is now possible to add an operator and it’s lazy transpose/hermitian conjugate #1194
NetKet 3.4.1 (BugFixes & DepWarns)#
Several deprecation warnings related to
jax.tree_util.tree_multimapbeing deprecated have been resolved by changing those calls to
jax.tree_util.tree_map. Jax should feel more tranquillo now. #1156
TDVPnow supports model with real parameters such as
RBMModPhase. #1139~ (not yet fixed)
NetKet 3.4 (Special 🧱 edition)#
Latticesupports specifying arbitrary edge content for each unit cell via the kwarg
custom_edges. A generator for hexagonal lattices with coloured edges is implemented as
nk.graph.Gridagain supports colouring edges by direction. #1074
Fermionic hilbert space (
nkx.hilbert.SpinOrbitalFermions) and fermionic operators (
nkx.operator.fermion) to treat systems with a finite number of Orbitals have been added to the experimental submodule. The operators are also integrated with OpenFermion. Those functionalities are still in development and we would welcome feedback. #1090
It is now possible to change the integrator of a
TDVPobject without reconstructing it. #1123
nk.nn.blockshas been added and contains an
MLP(Multi-Layer Perceptron). #1295
The gradient for models with real-parameter is now multiplied by 2. If your model had real parameters you might need to change the learning rate and halve it. Conceptually this is a bug-fix, as the value returned before was wrong (see Bug Fixes section below for additional details) #1069
In the statistics returned by
.R_hatdiagnostic has been updated to be able to detect non-stationary chains via the split-Rhat diagnostic (see, e.g., Gelman et al., Bayesian Data Analysis, 3rd edition). This changes (generally increases) the numerical values of
R_hatfor existing simulations, but should strictly improve its capabilities to detect MCMC convergence failure. #1138
The gradient obtained with
VarState.expect_and_gradfor models with real-parameters was off by a factor of \( 1/2 \) from the correct value. This has now been corrected. As a consequence, the correct gradient for real-parameter models is equal to the old times 2. If your model had real parameters you might need to change the learning rate and halve it. #1069
Fixed bug that prevented calling
Fixed bug where the gradient of
C->Cmodels (complex parameters, complex output) was computed incorrectly with
Fixed bug where
QGTJacobianPyTree.statewould not correctly transform the starting point
The gradient of the expectation value obtained with
SquaredOperators was off by a factor of 2 in some cases, and wrong in others. This has now been fixed. #1065.
NetKet 3.3.2 (🐛 Bug Fixes)#
Support for Python 3.10 #952.
The minimum optax version is now
0.1.1, which finally correctly supports complex numbers. The internal implementation of Adam which was introduced in 3.3 (#1069) has been removed. If an older version of
optaxis detected, an import error is thrown to avoid providing wrong numerical results. Please update your optax version! #1097
LazyOperator@densevectorfor operators such as lazy
The logic to update the progress bar in
nk.experimental.TDVPhas been improved, and it should now display updates even if there are very sparse
nk.logging.TensorBoardLogis now lazily initialized to better work in an MPI environment. #1086
nk.operator.LocalOperatormultiplied by 2 the nonlinearity
U. This has now been fixed. #1102
NetKet 3.3.1 (🐛 Bug Fixes)#
Initialisation of all implementations of
GCNNnow defaults to truncated normals with Lecun variance scaling. For layers without masking, there should be no noticeable change in behaviour. For masked layers, the same variance scaling now works correctly. #1045
Fix bug that prevented gradients of non-hermitian operators to be computed. The feature is still marked as experimental but will now run (we do not guarantee that results are correct). #1053
Common lattice constructors such as
Honeycombnow accepts the same keyword arguments as
QGTOnTheFlyrepresenting the real part of the QGT (showing up when the ansatz has real parameters) with a complex vector now throws an error. Previously the result would be wrong, as the imaginary part was casted away. #885
NetKet 3.3 (🎁 20 December 2021)#
The interface to define expectation and gradient function of arbitrary custom operators is now stable. If you want to define it for a standard operator that can be written as an average of local expectation terms, you can now define a dispatch rule for
netket.vqs.get_local_kernel(). The old mechanism is still supported, but we encourage to use the new mechanism as it is more terse. #954
nk.optimizer.Adam()now supports complex parameters, and you can use
nk.optimizer.split_complex()to make optimizers process complex parameters as if they are pairs of real parameters. #1009
MCState.expect_and_gradcomputations is now supported, which allows to bound the memory cost in exchange of a minor increase in computation time. #1006 (and discussions in #918 and #830)
A new variational state that performs exact summation over the whole Hilbert space has been added. It can be constructed with
nk.vqs.ExactStateand supports the same Jax neural networks as
nk.nn.DenseSymm()allows multiple input features. #1030
[Experimental] A new time-evolution driver
nk.experimental.TDVPusing the time-dependent variational principle (TDVP) has been added. It works with time-independent and time-dependent Hamiltonians and Liouvillians. #1012
[Experimental] A set of JAX-compatible Runge-Kutta ODE integrators has been added for use together with the new TDVP driver. #1012
Samplerand exact samplers (
ARDirectSampler) is removed, and it is only defined in
MetropolisSampler. The module function
nk.sampler.sample_nextalso only works with
MetropolisSampler. For exact samplers, please use the method
The default value of
Samplerand exact samplers is changed to 1, and specifying
n_chains_per_rankwhen constructing them is deprecated. Please change
MetropolisSampler, the default value is changed from
n_chains = 16(across all ranks) to
n_chains_per_rank = 16. #1017
GCNN_Parityallowed biasing both the parity-preserving and the parity-flip equivariant layers. These enter into the network output the same way, so having both is redundant and makes QGTs unstable. The biases of the parity-flip layers are now removed. The previous behaviour can be restored using the deprecated
extra_biasswitch; we only recommend this for loading previously saved parameters. Such parameters can be transformed to work with the new default using
DenseSymmare now three-dimensional, not two-dimensional. Parameters saved from earlier implementations can be transformed to the new convention using
Sampler.samplesis added to return a generator of samples. The module functions
sample_nextare deprecated in favor of the corresponding class methods. #1025
DenseEquivariantis deprecated; the number of input features are inferred from the input. #1030
DenseEquivariantis deprecated in favour of
The constructor of
TensorHilbert(which is used by the product operator
*for inhomogeneous spaces) no longer fails when one of the component spaces is non-indexable. #1004
flip_state()method used by
MetropolisLocalnow throws an error when called on a
nk.hilbert.ContinuousHilberthilbert space instead of entering an endless loop. #1014
Fixed bug in conversion to qutip for
MCMixedState, where the resulting shape (hilbert space size) was wrong. #1020
MCState.n_samplesand the new
GCNN_Parityallowed biasing both the parity-preserving and the parity-flip equivariant layers. These enter into the network output the same way, so having both is redundant and makes QGTs unstable. The biases of the parity-flip layers are now removed. #1030
NetKet 3.2 (26 November 2021)#
Heisenberg) now support passing a custom mapping of graph nodes to Hilbert space sites via the new
acting_on_subspaceargument. This makes it possible to create
GraphOperators that act on a subset of sites, which is useful in composite Hilbert spaces. #924
PauliStringnow supports any Hilbert space with local size 2. The Hilbert space is now the optional first argument of the constructor. #960
PauliStringnow can be multiplied and summed together, performing some simple algebraic simplifications on the strings they contain. They also lazily initialize their internal data structures, making them faster to construct but slightly slower the first time that their matrix elements are accessed. #955
PauliStrings can now be constructed starting from an
In addition to nearest-neighbor edges,
Latticecan now generate edges between next-nearest and, more generally, k-nearest neighbors via the constructor argument
max_neighbor_order. The edges can be distinguished by their
colorproperty (which is used, e.g., by
GraphOperatorto apply different bond operators). #970
Two continuous-space operators (
PotentialEnergy) have been implemented. #971
HeisenbergHamiltonians support different coupling strengths on
Graphedges with different colors. #972.
SpaceGroupBuildertake the wave vector as either varargs or iterables. #975
netket.experimentalsubmodule has been created and all experimental features have been moved there. Note that in contrast to the other
netket.experimentalis not imported by default. #976
nk.experimental.vqsmodule. Also moved the experimental samplers to
operator.size, has been deprecated. If you were using this function, please transition to
A bug where
LocalOperator.get_conn_flattenedwould read out-of-bounds memory has been fixed. It is unlikely that the bug was causing problems, but it triggered warnings when running Numba with boundscheck activated. #966
python-igraphhas been updated to
igraphfollowing the rename of the upstream project in order to work on conda. #986
DenseSymmlayer now also accepts objects of type
A bug where
VMC.info()was erroring has been fixed. #984
NetKet 3.1 (20 October 2021)#
Added Conversion methods
to_qobj()to operators and variational states, that produce QuTiP’s qobjects.
nk.nn.activation.reimhas been added that transforms a nonlinearity to act seperately on the real and imaginary parts
reim_reluhave been added
Autoregressive Neural Networks (ARNN) now have a
machine_powfield (defaults to 2) used to change the exponent used for the normalization of the wavefunction. #940.
The default initializer for
netket.models.GCNNhas been changed to from
netket.nn.initializershas been deprecated in favor of
AbstractARNNmust define the field
nk.operator.spin.DTypeare now unexported (they where never intended to be visible). #904
AbstractOperators have been renamed
AbstractOperators still exist, but have almost no functionality and they are intended as the base class for more arbitrary (eg. continuous space) operators. If you have defined a custom operator inheriting from
AbstractOperatoryou should change it to derive from
Added size check to
DiscreteOperator.get_connand throw helpful error messages if those do not match. #927
numba4jaxmodule has been factored out into a standalone library, named (how original)
numba4jax. This library was never intended to be used by external users, but if for any reason you were using it, you should switch to the external library. #934
netket.jaxnow includes several batching utilities like
batched_vjp. Those can be used to build memory efficient batched code, but are considered internal, experimental and might change without warning. #925.
Autoregressive networks now work with
Qubithilbert spaces. #937
NetKet 3.0 (23 august 2021)#
The default initializer for
netket.nn.Denselayers now matches the same default as
flax.linen, and it is
The default initializer for
netket.nn.DenseSymmlayers is now chosen in order to give variance 1 to every output channel, therefore defaulting to
NetKet 3.0b4 (17 august 2021)#
DenseSymm now accepts a mode argument to specify whever the symmetries should be computed with a full dense matrix or FFT. The latter method is much faster for sufficiently large systems. Other kwargs have been added to satisfy the interface. The api changes are also reflected in RBMSymm and GCNN. #792
The so-called legacy netket in
netket.legacyhas been removed. #773
MCStatenow use dispatch to select the relevant implementation of the algorithm. They can therefore be expanded and overridden without editing NetKet’s source code. #804
netket.utils.mpi_availablehas been moved to
netket.utils.mpi.availableto have a more consistent api interface (all mpi-related properties in the same submodule). #827
netket.logging.TBLoghas been renamed to
netket.logging.TensorBoardLogfor better readability. A deprecation warning is now issued if the older name is used #827
MCStateinitializes a model by calling
model.init, the call is now jitted. This should speed it up for non-trivial models but might break non-jit invariant models. #832
operator.get_conn_paddednow supports arbitrarily-dimensioned bitstrings as input and reshapes the output accordingly. #834
NetKet’s implementation of dataclasses now support
pytree_node=True/Falseon cached properties. #835
Plum version has been bumped to 1.5.1 to avoid broken versions (1.4, 1.5). #856.
Numba version 0.54 is now allowed #857.
NetKet 3.0b3 (published on 9 july 2021)#
netket.utils.groupsubmodule provides utilities for geometrical and permutation groups.
Lattice(and its specialisations like
Grid) use these to automatically construct the space groups of lattices, as well as their character tables for generating wave functions with broken symmetry. #724
Autoregressive neural networks, sampler, and masked linear layers have been added to
netket.graph.Gridclass has been removed. netket.graph.Grid will now return an instance of
graph.Latticesupporting the same API but with new functionalities related to spatial symmetries. The
color_edgesoptional keyword argument has been removed without deprecation. #724
MCState.n_discardhas been renamed
MCState.n_discard_per_chainand the old binding has been deprecated #739.
centered=Truehas been removed because we are now convinced the two options yielded equivalent results.
QGTOnTheFlynow always behaves as if
networkXhas been replaced by
igraph, yielding a considerable speedup for some graph-related operations #729.
netket.hilbert.randommodule now uses
netket.utils.dispatch) to select the correct implementation of
flip_state. This makes it easy to define new hilbert states and extend their functionality easily. #734.
The AbstractHilbert interface is now much smaller in order to also support continuous Hilbert spaces. Any functionality specific to discrete hilbert spaces (what was previously supported) has been moved to a new abstract type
netket.hilbert.DiscreteHilbert. Any Hilbert space previously subclassing netket.hilbert.AbstractHilbert should be modified to subclass netket.hilbert.DiscreteHilbert #800.
normalize=False, do not subtract the logarithm of the maximum value from the state #705.
Autoregressive networks now work with Fock space and give correct errors if the hilbert space is not supported #806.
Autoregressive networks are now much (x10-x100) faster #705.
Do not throw errors when calling
operator.get_conn_flattened(states)with a jax array #764.
Fix bug with the driver progress bar when
step_size != 1#747.
NetKet 3.0b2 (published on 31 May 2021)#
Group Equivariant Neural Networks have been added to
Permutation invariant RBM and Permutation invariant dense layer have been added to
Add the property
SamplerState, computing the MPI-enabled acceptance ratio. #592.
StateLog, a new logger that stores the parameters of the model during the optimization in a folder or in a tar file. #645
A warning is now issued if NetKet detects to be running under
mpirunbut MPI dependencies are not installed #631
operator.LocalOperators now do not return a zero matrix element on the diagonal if the whole diagonal is zero. #623.
logger.JSONLognow automatically flushes at every iteration if it does not consume significant CPU cycles. #599
The interface of Stochastic Reconfiguration has been overhauled and made more modular. You can now specify the solver you wish to use, NetKet provides some dense solvers out of the box, and there are 3 different ways to compute the Quantum Geometric Tensor. Read the documentation to learn more about it. #674
Unless you specify the QGT implementation you wish to use with SR, we use an automatic heuristic based on your model and the solver to pick one. This might affect SR performance. #674
For all samplers,
n_chainsnow sets the total number of chains across all MPI ranks. This is a breaking change compared to the old API, where
n_chainswould set the number of chains on a single MPI rank. It is still possible to set the number of chains per MPI rank by specifying
n_chains. This change, while breaking allows us to be consistent with the interface of
n_samplesis the total number of samples across MPI nodes.
MetropolisSampler.reset_chainhas been renamed to
MetropolisSampler.reset_chains. Likewise in the constructor of all samplers.
Briefly during development releases
MetropolisSamplerState.acceptance_ratioreturned the percentage (not ratio) of acceptance.
acceptance_ratiois now deprecated in favour of the correct
models.Jastrownow internally symmetrizes the matrix before computing its value #644
MCState.evaluatehas been renamed to
nk.optimizer.SRno longer accepts keyword argument relative to the sparse solver. Those should be passed inside the closure or
nk.optimizer.sr.SRLazyGMREShave been deprecated and will soon be removed.
Parts of the
LatticeAPI have been overhauled, with deprecations of several methods in favor of a consistent usage of
Lattice.positionfor real-space location of sites and
Lattice.basis_coordsfor location of sites in terms of basis vectors.
Lattice.siteshas been added, which provides a sequence of
LatticeSiteobjects combining all site properties. Furthermore,
Latticenow provides lookup of sites from their position via
id_from_positionusing a hashing scheme that works across periodic boundaries. #703 #715
nk.variationalhas been renamed to
nk.vqsand will be removed in a future release.
operator.BoseHubbardusage under jax Hamiltonian Sampling #662
R->Cmodels with non homogeneous parameters #661
Fix MPI Compilation deadlock when computing expectation values #655
Fix bug preventing the creation of a
hilbert.SpinHilbert space with odd sites and even
NetKet 3.0b1 (published beta release)#
Hilbert space constructors do not store the lattice graph anymore. As a consequence, the constructor does not accept the graph anymore.
operator.LocalOperatornow default to real-valued matrix elements, except if you construct them with a complex-valued matrix. This is also valid for operators such as :func:
When performing algebraic operations
*, -, +on pairs of
operator.LocalOperator, the dtype of the result iscomputed using standard numpy promotion logic.
Doing an operation in-place
+=, -=, *=on a real-valued operator will now fail if the other is complex. While this might seem annoying, it’s useful to ensure that smaller types such as
complex64are preserved if the user desires to do so.
AbstractMachinehas been removed. It’s functionality is now split among the model itself, which is defined by the user and
variational.MCStatefor pure states or
variational.MCMixedStatefor mixed states.
The model, in general is composed by two functions, or an object with two functions: an
init(rng, sample_val)function, accepting a
jax.random.PRNGKey()object and an input, returning the parameters and the state of the model for that particular sample shape, and a
apply(params, samples, **kwargs)function, evaluating the model for the given parameters and inputs.
Some models (previously machines) such as the RBM (Restricted Boltzmann Machine) Machine, NDM (Neural Density Matrix) or MPS (Matrix Product State ansatz) are available in
Machines, now called models, should be written using Flax or another jax framework.
Serialization and deserialization functionality has now been moved to
netket.variational.MCState, which support the standard Flax interface through MsgPack. See Flax docs for more information
AbstractMachine.init_random_parametersfunctionality has now been absorbed into
netket.vqs.VariationalState.init_parameters(), which however has a different syntax.
Samplers now require the Hilbert space upon which they sample to be passed in to the constructor. Also note that several keyword arguments of the samplers have changed, and new one are available.
It’s now possible to change Samplers dtype, which controls the type of the output. By default they use double-precision samples (
np.float64). Be wary of type promotion issues with your models.
Samplers no longer take a machine as an argument.
Samplers are now immutable (frozen)
flax.struct.dataclass) that only hold the sampling parameters. As a consequence it is no longer possible to change their settings such as
n_sweepswithout creating a new sampler. If you wish to update only one parameter, it is possible to construct the new sampler with the updated value by using the
Samplers are no longer stateful objects. Instead, they can construct an immutable state object
netket.sampler.init_state, which can be passed to sampling functions such as
netket.sampler.sample, which now return also the updated state. However, unless you have particular use-cases we advise you use the variational state
The netket.optimizer.SR object now is only a set of options used to compute the SR matrix. The SR matrix, now called
quantum_geometric_tensorcan be obtained by calling
variational.MCState.quantum_geometric_tensor(). Depending on the settings, this can be a lazy object.
netket.Vmchas been renamed to
netket.models.RBMreplaces the old
RBMmachine, but has real parameters by default.
As we rely on Jax, using
dtype=complex, which are weak types, will sometimes lead to loss of precision because they might be converted to
np.complex128instead if you want double precision when defining your models.