paddle_quantum.ansatz.vans

可变结构电路的功能实现。

cir_decompose(cir)

将电路中的 Layer 分解成量子门, 如果需要的话可以把所有参数门的输入转为可训练参数

参数:
  • cir (Circuit) – 待分解电路

  • trainable (bool, optional) – 是否将分解后的参数量子门输入转为参数baidu

返回:

分解后的电路

返回类型:

Circuit

备注

该量子电路稳定支持原生门,不支持 oracle 等其他自定义量子门。

class Inserter

基类: object

用于向电路中加入模块的插入器类。

classmethod insert_identities(cir, insert_rate, epsilon)

根据插入比例,向当前量子电路中添加电路模块。

参数:
  • cir (Circuit) – 输入量子电路。

  • insert_rate (float) – 添加速率。

  • epsilon (float) – 添加模块初始化参数的浮动范围。

返回:

插入后的电路。

返回类型:

Circuit

class Simplifier

基类: object

用于电路简化的简化器类。

classmethod simplify_circuit(cir, zero_init_state=True)

根据简化规则删除电路中的量子门。

参数:
  • cir (Circuit) – 待简化电路。

  • zero_init_state (bool, optional) – 量子电路作用的初始态是否为 \(|0\rangle\),默认为 True

返回:

简化后的电路。

返回类型:

Circuit

class VAns(n, loss_func, *loss_func_args, epsilon=0.1, insert_rate=2, iter=100, iter_out=10, LR=0.1, threshold=0.002, accept_wall=100, zero_init_state=True)

基类: object

自动优化电路结构的 VAns 类。

备注

输入的损失函数的第一个参数必须为量子电路。

参数:
  • n (int) – 量子比特数量。

  • loss_func (Callable[[Circuit, Any], paddle.Tensor]) – 损失函数。

  • *loss_func_args (Any) – 损失函数除了电路以外的所有参数。

  • epsilon (float, optional) – 添加模块的初始化参数浮动范围,默认为 0.1

  • insert_rate (float, optional) – 添加率,控制一次添加模块的数量,默认为 2

  • iter (int, optional) – 优化参数迭代次数,默认为 100

  • iter_out (int, optional) – 优化结构的迭代次数,默认为 10

  • LR (float, optional) – 学习率,默认为 0.1

  • threshold (float, optional) – 删除量子门时允许损失上升的阈值,默认为 0.002

  • accept_wall (float, optional) – 完成一轮结构优化后的电路采纳率,默认为 100

  • zero_init_state (bool, optional) – 电路作用的初始态是否为 \(|0\rangle\),默认为 True

train()

使用 VAns 方法进行训练。

返回:

优化过程中损失最低的电路。

返回类型:

Circuit

optimization(cir)

对电路参数进行优化。

参数:

cir (Circuit) – 当前电路。

返回:

优化后的损失值。

返回类型:

float

delete_gates(cir, loss)

在损失增加小于一定阈值的情况下,删除电路中的参数化量子门以进一步简化电路。

参数:
  • cir (Circuit) – 目标量子电路。

  • loss (float) – 当前损失值。

返回:

删除多余量子门后的电路。

返回类型:

Circuit