我试图用VQC类在qiskit中实现一个量子神经网络。
问题是,每个数据包含190个特性,这不能用默认的VQC函数(ZZfeatureMap)编码,因为这意味着要创建一个190个量子位的电路。
我想采用的解决方案是振幅编码,它只允许我使用8个量子位( 256幅=190个特征+ 66个零)。如何在qiskit中实现执行此功能的参数化电路?
我尝试使用以下方法(作为两个量子位上的例子),但不起作用:
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)通过这种方式,我将矢量编码为量子位的振幅。但是现在我需要参数化这个(向量不是固定的)。问题是“初始化”函数不接受参数:
回溯(最近一次调用): ..。 文件"D:. \qiskit\extensions\quantum_initializer\initializer.py",第455行,初始化 返回self.append(初始化(params,num_qubits),量子位) 文件"D:. \qiskit\extensions\quantum_initializer\initializer.py",第89行,init 如果不是math.isclose(sum(np.absolute(params) ** 2),1.0, TypeError: abs():‘参数’的坏操作数类型
是否有方法创建和幅度编码也是参数化的?
编辑2:我解决了这个问题,谢谢。如果要参数化初始化电路,只需使用RawFeatureVector。
发布于 2021-07-05 18:09:32
您可以使用Parameter类在qiskit中构建参数化电路。下面是一个示例:
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(θ) ├
└───────┘https://stackoverflow.com/questions/68257662
复制相似问题