netket.variational.VariationalState

class netket.variational.VariationalState(hilbert)[source]

Bases: abc.ABC

Abstract class for variational states representing either pure states or mixed quantum states.

A variational state is a quantum state depending on a set of parameters, and that supports operations such as computing quantum expectation values and their gradients.

A Variational stat can be serialized using flax’s msgpack machinery. See their docs.

__init__(hilbert)[source]

Initialize self. See help(type(self)) for accurate signature.

Parameters

hilbert (netket.hilbert.abstract_hilbert.AbstractHilbert) –

Attributes
hilbert

The descriptor of the Hilbert space on which this variational state is defined.

Return type

AbstractHilbert

model_state

The optional pytree with the mutable state of the model.

Return type

Optional[Any]

n_parameters

The total number of parameters in the model.

Return type

int

parameters

The pytree of the parameters of the model.

Return type

Any

variables

The PyTreee containing the paramters and state of the model, used when evaluating it.

Return type

Any

Methods
abstract expect(Ô)[source]
Estimates the quantum expectation value for a given operator O.

In the case of a pure state $psi$, this is $<O>= <Psi|O|Psi>/<Psi|Psi>$ otherwise for a mixed state $rho$, this is $<O> = Tr[rho hat{O}/Tr[rho]$.

Parameters
  • – the operator O.

  • Ô (netket.operator._abstract_operator.AbstractOperator) –

Return type

Stats

Returns

An estimation of the quantum expectation value <O>.

expect_and_grad(Ô, *, mutable=None, is_hermitian=None)[source]

Estimates both the gradient of the quantum expectation value of a given operator O.

Parameters
  • – the operator Ô for which we compute the expectation value and it’s gradient

  • mutable (Optional[Any]) – Can be bool, str, or list. Specifies which collections in the model_state should be treated as mutable: bool: all/no collections are mutable. str: The name of a single mutable collection. list: A list of names of mutable collections. This is used to mutate the state of the model while you train it (for example to implement BatchNorm. Consult Flax’s Module.apply documentation for a more in-depth exaplanation).

  • is_hermitian (Optional[bool]) – optional override for whever to use or not the hermitian logic. By default it’s automatically detected.

  • Ô (netket.operator._abstract_operator.AbstractOperator) –

Return type

Tuple[Stats, Any]

Returns

An estimation of the quantum expectation value <O>. An estimation of the average gradient of the quantum expectation value <O>.

grad(Ô, *, is_hermitian=None, mutable=None)[source]

Estimates the gradient of the quantum expectation value of a given operator O.

Parameters
  • op (netket.operator.AbstractOperator) – the operator O.

  • is_hermitian (Optional[bool]) – optional override for whever to use or not the hermitian logic. By default it’s automatically detected.

  • mutable (Optional[Any]) –

Returns

An estimation of the average gradient of the quantum expectation value <O>.

Return type

array

init_parameters(init_fun=None, *, seed=None)[source]

Re-initializes all the parameters with the provided initialization function, defaulting to the normal distribution of standard deviation 0.01.

Warning

The init function will not change the dtype of the parameters, which is determined by the model. DO NOT SPECIFY IT INSIDE THE INIT FUNCTION

Parameters
  • init_fun (Optional[Callable[[Any, Sequence[int], Any], Any]]) – a jax initializer such as netket.nn.initializers.normal. Must be a Callable taking 3 inputs, the jax PRNG key, the shape and the dtype, and outputting an array with the valid dtype and shape. If left unspecified, defaults to netket.nn.initializers.normal(stddev=0.01)

  • seed (Optional[Any]) – Optional seed to be used. The seed is synced across all MPI processes. If unspecified, uses a random seed.

quantum_geometric_tensor(sr)[source]

Computes an estimate of the quantum geometric tensor G_ij.

This function returns a linear operator that can be used to apply G_ij to a given vector or can be converted to a full matrix.

Parameters

sr – The object containing the settings off the SR format to be used.

Returns

A linear operator representing the quantum geometric tensor.

reset()[source]

Resets the internal cache of th variational state. Called automatically when the parameters/state is updated.

to_array(normalize=True)[source]

Returns the dense-vector representation of this state.

Parameters

normalize (bool) – If True, the vector is normalized to have L2-norm 1.

Return type

ndarray

Returns

An exponentially large vector representing the state in the computational basis.