mindquantum.framework.MQOps
- class mindquantum.framework.MQOps(expectation_with_grad)[源代码]
包含encoder和ansatz线路的量子线路演化算子,算子返回在参数化量子线路(PQC)演化出的量子态上哈密顿量期望值。此算子只能在 PYNATIVE_MODE 下执行。
- 参数:
expectation_with_grad (GradOpsWrapper) - 接收encoder数据和ansatz数据,并返回期望值和参数相对于期望的梯度值。
- 输入:
enc_data (Tensor) - 希望编码为量子态的Tensor,其shape为 \((N, M)\) ,其中 \(N\) 表示batch大小, \(M\) 表示encoder参数的数量。
ans_data (Tensor) - shape为 \(N\) 的Tensor,用于ansatz电路,其中 \(N\) 表示ansatz参数的数量。
- 输出:
Tensor,hamiltonian的期望值。
- 支持平台:
GPU
,CPU
样例:
>>> import numpy as np >>> import mindspore as ms >>> from mindquantum.core.circuit import Circuit >>> from mindquantum.core.operators import Hamiltonian, QubitOperator >>> from mindquantum.framework import MQOps >>> from mindquantum.simulator import Simulator >>> ms.set_context(mode=ms.PYNATIVE_MODE, device_target="CPU") >>> enc = Circuit().ry('a', 0).as_encoder() >>> ans = Circuit().h(0).rx('b', 0) >>> ham = Hamiltonian(QubitOperator('Z0')) >>> sim = Simulator('mqvector', 1) >>> grad_ops = sim.get_expectation_with_grad(ham, enc + ans) >>> enc_data = np.array([[0.1]]) >>> ans_data = np.array([0.2]) >>> f, g_enc, g_ans = grad_ops(enc_data, ans_data) >>> f array([[0.0978434+0.j]]) >>> net = MQOps(grad_ops) >>> f_ms = net(ms.Tensor(enc_data), ms.Tensor(ans_data)) >>> f_ms Tensor(shape=[1, 1], dtype=Float32, value= [[ 9.78433937e-02]])