mindquantum.nn.MindQuantumAnsatzOnlyOperator

class mindquantum.nn.MindQuantumAnsatzOnlyOperator(param_names, circuit, measurements, n_threads=1)[source]

An Ansatz only Mindquantum operator.

This operator only need an ansatz circuit and the parameter data for ansatz circuit.

Parameters
  • param_names (list[str]) – Parameters names of ansatz circuit. The order of this parameters is the same as the order of trainable parameters.

  • circuit (Circuit) – The ansatz circuit.

  • measurements (Union[Hamiltonian, list[Hamiltonian], Projector, list[Projector]]) – Hamiltonian or a list of Hamiltonian for measurement.

  • n_threads (int) – Number of threads for data parallel. Default: 1.

Inputs:
  • input (Tensor) - Tensor of shape \((E_{in}, )\), where \(E_{in}\) is the number of parameters in ansatz circuit.

Outputs:

Tensor of shape \((1, 1)\).

Supported Platforms:

CPU

Examples

>>> from mindquantum import Circuit, RX, Hamiltonian
>>> from mindquantum.ops import QubitOperator
>>> from mindquantum.nn import MindQuantumAnsatzOnlyOperator
>>> from mindspore import Tensor
>>> import numpy as np
>>> circuit = Circuit(RX('a').on(0))
>>> ham = Hamiltonian(QubitOperator('Z0'))
>>> mea = MindQuantumAnsatzOnlyOperator(circuit.para_name, circuit, ham)
>>> data = Tensor(np.array([0.5]).astype(np.float32))
>>> mea(data)
Tensor(shape=[1, 1], dtype=Float32, value=
[[ 8.77582550e-01]])