quantum-computing - 带有幅度编码的 qiskit VQC 用于状态准备

标签 quantum-computing qiskit

我正在尝试使用 VQC 类在 qiskit 中实现量子神经网络。

问题是每个数据都包含 190 个特征,这些特征无法使用默认的 VQC 函数 (ZZfeatureMap) 进行编码,因为这意味着创建一个具有 190 个量子位的电路。

我想采用的解决方案是振幅编码,它允许我仅使用 8 个量子位(256 个振幅 = 190 个特征 + 66 个零)。 如何在 qiskit 中实现执行此操作的参数化电路?

我尝试了以下方法(以 2 个量子位为例),但不起作用:

custom_circ = QuantumCircuit(2)
x = ParameterVector('x', 4)

custom_circ.initialize(x)

编辑:

我的问题不在于参数,而在于幅度编码。 通常,如果我需要在 2 个 Qbit 中编码 4 个数字的向量,我只需执行以下操作:

circuit = QuantumCircuit(2)
vector = [0.124, -0.124, 0.124, 0.124]
circuit.initialize(vector)

通过这种方式,我将向量编码为量子位的振幅。 但现在我需要参数化它(向量不固定)。 问题是“初始化”函数不接受参数:

Traceback (most recent call last):

[...]

File "D: ... \qiskit\extensions\quantum_initializer\initializer.py", line 455, in initialize

return self.append(Initialize(params, num_qubits), qubits)

File "D: ... \qiskit\extensions\quantum_initializer\initializer.py", line 89, in init

if not math.isclose(sum(np.absolute(params) ** 2), 1.0,

TypeError: bad operand type for abs(): 'Parameter'

有没有一种方法可以创建参数化的幅度编码?

编辑2: 我解决了问题,谢谢。 如果您想参数化初始化电路,只需使用 RawFeatureVector .

最佳答案

您可以使用Parameter在qiskit中构建参数化电路类(class)。这是一个例子:

In [1]: from qiskit import QuantumCircuit
   ...: from qiskit.circuit import Parameter

In [2]: custom_circ = QuantumCircuit(2)
   ...: theta = Parameter("\u03B8")
   ...: custom_circ.rz(theta, range(2))
   ...: custom_circ.draw()
Out[2]: 
     ┌───────┐
q_0: ┤ RZ(θ) ├
     ├───────┤
q_1: ┤ RZ(θ) ├
     └───────┘

关于quantum-computing - 带有幅度编码的 qiskit VQC 用于状态准备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68257662/

相关文章:

windows - IBM API 的 Python 多处理错误(Q Experience)

python - 在 MacOS HighSierra 上安装 qiskit 错误 : No such file or directory: 'qiskit.egg-info'

Qiskit 的绘图仅显示电路名称而不显示架构

python - 无法从 Qiskit 0.7 导入 Aer

quantum-computing - 如何制作一个根据参数生成 |0> 或 |1> 的门?

algorithm - 需要对量子模型的解释

python - 使用 numpy 在 python 上实现 CNOT 量子门

quantum-computing - 量子 V 门 1/sqrt(5) ( I + 2iZ)