mindquantum.framework.MQN2Ops
- class mindquantum.framework.MQN2Ops(expectation_with_grad)[source]
MindQuantum operator that get the square of absolute value of expectation of a hamiltonian on a quantum state evaluated by a parameterized quantum circuit (PQC). This PQC should contains a encoder circuit and an ansatz circuit. This ops is PYNATIVE_MODE supported only.
- Parameters
expectation_with_grad (GradOpsWrapper) – a grad ops that receive encoder data and ansatz data and return the square of absolute value of expectation value and gradient value of parameters respect to expectation.
- Inputs:
enc_data (Tensor) - Tensor of encoder data with shape
that you want to encode into quantum state, where means the batch size and means the number of encoder parameters.ans_data (Tensor) - Tensor with shape
for ansatz circuit, where means the number of ansatz parameters.
- Outputs:
Tensor, The square of absolute value of expectation value of the hamiltonian.
- Supported Platforms:
GPU
,CPU
Examples
>>> import numpy as np >>> from mindquantum import Circuit, Hamiltonian, QubitOperator >>> from mindquantum import Simulator, MQN2Ops >>> import mindspore as ms >>> ms.context.set_context(mode=ms.context.PYNATIVE_MODE, device_target="CPU") >>> enc = Circuit().ry('a', 0) >>> ans = Circuit().h(0).rx('b', 0) >>> ham = Hamiltonian(QubitOperator('Z0')) >>> sim = Simulator('projectq', 1) >>> grad_ops = sim.get_expectation_with_grad(ham, enc+ans, ... encoder_params_name=['a'], ... ansatz_params_name=['b']) >>> enc_data = np.array([[0.1]]) >>> ans_data = np.array([0.2]) >>> f, g_enc, g_ans = grad_ops(enc_data, ans_data) >>> np.abs(f) ** 2 array([[0.00957333]]) >>> net = MQN2Ops(grad_ops) >>> f_ms = net(ms.Tensor(enc_data), ms.Tensor(ans_data)) >>> f_ms Tensor(shape=[1, 1], dtype=Float32, value= [[ 9.57333017e-03]])