Skip to content

微分方法(DiffMethod)

DiffMethod 是一个枚举,用于选择 VQCircuit.get_gradientsVQCircuit.get_gradients_and_expectation 在计算参数梯度时使用的微分策略。

概述

微分方法的选择决定了期望值对每个变分参数的梯度如何计算。不同的方法在线路求值次数、内存使用和数值精度之间进行权衡。

枚举值

描述
ADJOINT_DIFF伴随微分方法(Adjoint Differentiation)。通过正向运行线路然后反向运行(伴随)来计算梯度,无论参数数量多少,都只需要两次线路求值。基于 Jones 和 Gacon 在 "Efficient calculation of gradients in classical simulations of variational quantum algorithms"(arXiv:2009.02823)中描述的方法。

用法

DiffMethod 值传递给 VQCircuit 的梯度计算方法:

python
import numpy as np
from pyqpanda3.vqcircuit import VQCircuit, DiffMethod
from pyqpanda3.hamiltonian import Hamiltonian

vqc = VQCircuit()
# ... 构建变分线路 ...

params = np.array([0.1, 0.2, 0.3, 0.4])
hamiltonian = Hamiltonian(...)

# 使用伴随微分
grads = vqc.get_gradients(params, hamiltonian, DiffMethod.ADJOINT_DIFF)

# 也可同时获取期望值
result = vqc.get_gradients_and_expectation(params, hamiltonian, DiffMethod.ADJOINT_DIFF)

参考文献

  • T. Jones and S. Gacon, "Efficient calculation of gradients in classical simulations of variational quantum algorithms," arXiv:2009.02823, 2020. Available at https://arxiv.org/abs/2009.02823.

另见

Released under the MIT License.