微分方法(DiffMethod)
DiffMethod 是一个枚举,用于选择 VQCircuit.get_gradients 和 VQCircuit.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.