首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于状态制备的振幅编码qiskit VQC

用于状态制备的振幅编码qiskit VQC
EN

Stack Overflow用户
提问于 2021-07-05 14:15:20
回答 1查看 840关注 0票数 1

我试图用VQC类在qiskit中实现一个量子神经网络。

问题是,每个数据包含190个特性,这不能用默认的VQC函数(ZZfeatureMap)编码,因为这意味着要创建一个190个量子位的电路。

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

我尝试使用以下方法(作为两个量子位上的例子),但不起作用:

代码语言:javascript
复制
custom_circ = QuantumCircuit(2)
x = ParameterVector('x', 4)

custom_circ.initialize(x)

编辑:

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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2021-07-05 18:09:32

您可以使用Parameter类在qiskit中构建参数化电路。下面是一个示例:

代码语言:javascript
复制
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(θ) ├
     └───────┘
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68257662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档