我使用以下内容创建了一个OpflowQNN实例:
qnn = OpflowQNN(operator=~StateFn(Z ^ Z ^ I ^ I) @ StateFn(circuit),
input_params=input_params,
weight_params=weights,
quantum_instance=qi
)其中电路是一个工作在4量子位上的qiskit.circuit.QuantumCircuit。
我试图实现的是,在运行向前传球时,只测量Z-基中量子位2和3的期望值。我不需要量子位0和1的值。
我想要这两个量子位的期望值,这导致输出形状(2,)在前传。
我试图做的是只将Pauli Z运算符应用于第2和第3量子位,正如您在上面的代码片段中看到的那样。
但向前传球的输出仍具有形状(1,)。我目前正在努力弄清楚这些观测者到底在做些什么。我也不知道OpflowQNN中向前传递的输出是什么。我的猜测是一些人总结了期望值,但我不太确定。
我用我从源代码构建的正在工作的qiskit版本尝试了另一件事(否则这是行不通的):
operator=ListOp([~StateFn(Z ^ I ^ I ^ I), ~StateFn(I ^ Z ^ I ^ I)]) @ StateFn(circuit)这给了我一个形状数组(2,)在向前传球,但我不确定这是否真的是计算量子位2和3的期望值的正确方法。
发布于 2021-12-08 11:53:24
最后我用了:
operator = ListOp([
~StateFn(PauliSumOp.from_list([('IZII', 1.0)])) @ StateFn(circuit),
~StateFn(PauliSumOp.from_list([('IIZI', 1.0)])) @ StateFn(circuit)])https://stackoverflow.com/questions/68326212
复制相似问题