PennyLane 是加拿大 Xanadu 公司开源的量子机器学习(QML)框架,核心能力是把量子电路封装为可与 PyTorch、TensorFlow、JAX 深度集成、支持自动微分的「量子节点」(QNode),让研究者可以用训练经典神经网络的方式训练参数化量子电路。它解决的核心问题是:传统量子编程框架(如 Qiskit、Cirq)只负责电路构造与硬件提交,不支持对电路参数求解析梯度;而 QML 算法(变分量子本征求解器 VQE、量子近似优化算法 QAOA、量子神经网络 QNN)恰恰依赖梯度下降训练。PennyLane 通过参数移位规则(Parameter-Shift Rule)提供解析梯度,把量子电路变成深度学习管道中的一等公民。框架自带多个模拟器后端,并通过官方插件接入 IBM、IonQ、Quantinuum、Amazon Braket 等真实量子硬件,覆盖从算法原型到硬件验证的完整链路。本篇按「速览 → 安装 → 上手 → 核心能力 → 部署 → 对比 → 迭代 → 场景 → 误区 → 面试」组织,全程可操作,代码可直接复制运行。
对 AI 从业者而言,掌握 PennyLane 意味着你具备将量子计算接入现有深度学习技术栈的工程能力——这是量子机器学习方向需求量最大的交叉技能。
目录
速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。
为什么需要 PennyLane:量子电路的「梯度鸿沟」→ 统一可微接口
传统量子编程框架的设计目标是描述和运行量子电路:Qiskit 侧重 IBM 硬件生态,Cirq 侧重谷歌硬件与调度,它们都提供了参数化电路(Parameter)与采样运行能力,但不提供对电路参数的解析梯度。而变分量子算法(VQA)的训练循环是典型的梯度下降:损失函数的输入是旋转门的角度 θ,输出是期望值测量结果,你需要 ∂⟨H⟩/∂θ 来更新参数。用有限差分近似梯度,每个参数需要两次电路求值且数值噪声大;直接用 PyTorch 的反向传播穿透电路,又因为量子测量过程不可导而失效。
PennyLane 用参数移位规则解决这一问题:对形如 RY(θ) 的单参数门,其期望值函数 f(θ) 满足 ∂f/∂θ = [f(θ+π/2) − f(θ−π/2)]/2,即只需在两个平移点各做一次电路求值,就能得到解析精确的梯度。框架自动为量子节点(QNode)注入这套微分逻辑,把电路输出包装成与 PyTorch Tensor、JAX Array 无异的可微张量 。这意味着你可以把一个量子层嵌进 ResNet、Transformer 或任何经典模型中间,统一调用 .backward()。
与同类工具相比,PennyLane 的气质差异在「可微性优先」:Qiskit 的机器学习和梯度能力主要依托 Qiskit Machine Learning 模块且与 IBM 生态绑定较紧,Cirq 则干脆把可微训练交给 TensorFlow Quantum 配合实现。PennyLane 把可微量子计算做成了框架的第一性设计,插件化的设备抽象让从模拟到真机的切换只是改一行设备名。
安装与环境配置:3 步就绪
第一步安装基础库。PennyLane 支持 Python 3.10–3.13,建议在独立虚拟环境中安装,避免与既有 ML 项目的依赖冲突。基础版 pip install pennylane 自带 default.qubit 纯 Python 模拟器,可直接跑通全部教程。第二步安装深度学习框架集成与加速后端。需要 PyTorch、TensorFlow 或 JAX 时一并安装;需要高性能模拟时安装 pennylane-lightning——它提供 C++ 内核的 lightning.qubit 设备,比默认模拟器快一个数量级以上。第三步验证安装:打印版本号并创建最小设备对象,确认核心依赖(NumPy、SciPy)已就绪。
安装完成后建议立即安装并运行官方教程集合:pip install jupyter && python -m pip install pennylane-qchem,后者用于量子化学模块,后续 VQE 实验会用到。
# 创建并激活虚拟环境(Python 3.10-3.13)python -m venv .venv && source .venv/bin/activate # 安装基础版(含默认模拟器与自动微分)pip install pennylane # 同时安装深度学习框架集成与高性能模拟器pip install pennylane torch tensorflow jax pennylane-lightning # 验证安装:应输出版本号,如 0.40.0python -c "import pennylane as qml; print(qml.__version__); print(qml.device('default.qubit', wires=2))"
快速上手:10 分钟跑通第一个可微量子电路
最小可用流程的思路是:定义设备 → 用装饰器包装量子电路 → 传入可微张量 → 反向传播取梯度。官方文档的 Variational Classifier 教程是标准起点,这里给出它的最小可运行版本。Step 1:创建设备对象 qml.device("default.qubit", wires=2),明确模拟的比特数与后端;Step 2:用 @qml.qnode(dev) 装饰一个普通 Python 函数,函数体内按顺序放置量子门,最后一条 return 指定测量方式(期望值或采样);Step 3:把参数包装为 torch.tensor(..., requires_grad=True) 后直接调用 QNode,对结果调用 .backward() 即可取出梯度。
运行后你会看到形如「QNode 输出:0.8776,梯度:-0.4794」的结果。进阶技巧:把 return 改为 return qml.probs(wires=[0,1]) 可一次取到全部 4 个计算基态的测量概率;把 qml.expval 换成多个测量的列表则输出多维向量,用于多目标损失。
import pennylane as qmlimport torch # Step 1: 定义设备(2 比特默认模拟器)dev = qml.device("default.qubit", wires=2) # Step 2: 用 @qml.qnode 包装可微量子节点@qml.qnode(dev)def circuit(theta): qml.RY(theta, wires=0) # 单比特旋转门(θ 为可训练参数) qml.CNOT(wires=[0, 1]) # 两比特纠缠门 return qml.expval(qml.PauliZ(wires=1)) # 测量比特 1 的泡利 Z 期望值 # Step 3: 传入需要梯度的张量并反向传播theta = torch.tensor(0.5, requires_grad=True)output = circuit(theta)output.backward()print(f"QNode 输出: {output.item():.4f}") # 期望值 ∈ [-1, 1]print(f"梯度 (∂/∂θ): {theta.grad.item():.4f}") # 解析梯度,来自参数移位规则
核心能力详解:5 大支柱
支柱一 · QNode 可微管道。 QNode 是框架的核心抽象,它把「电路构造 + 设备执行 + 测量返回 + 梯度计算」打包为一个类函数对象。默认梯度机制为参数移位规则,也可用 diff_method="finite-diff" 显式切换为数值梯度、或对纯模拟器电路用 "backprop" 直接穿透。对包含纠缠门(如 CNOT、CZ)的电路,框架自动应用广义参数移位规则,无需手工推导。
支柱二 · 多后端设备抽象。 设备(Device)统一了「在哪跑」的问题。本地端:default.qubit(纯 Python 参考实现)、lightning.qubit(C++ 加速)、lightning.gpu(CUDA);云端真机端:通过官方插件 pennylane-qiskit、pennylane-braket、pennylane-ionq、pennylane-quantinuum 接入 IBM、AWS、IonQ、Quantinuum 硬件。切换后端只需修改设备字符串,电路代码零改动。
支柱三 · 与主流 ML 框架的深度集成。 框架提供三层集成:最底层是输出张量直接兼容 torch.Tensor/tf.Tensor/jax.Array,支持 .backward();中间层是 qml.qnn.TorchLayer 与 KerasLayer,把量子电路包装为可即插即用的神经网络层;最上层是自定义训练循环,量子层与经典层混合前向、统一反向。从 0.36 起 JAX 集成进一步强化,支持 jax.jit 对整条混合管线的编译优化。
支柱四 · 内置 QML 算法库。 qml.qnn(量子神经网络层与损失工具)、qml.qaoa(QAOA 电路与成本哈密顿量构造)、qml.qchem(分子哈密顿量映射、VQE 基态求解)、qml.liealg(李代数工具,用于可表达性分析,0.34 引入)覆盖了当前量子机器学习的主流算法方向,多数场景无需从头实现电路模板。
支柱五 · Catalyst 编译加速。 Catalyst 是配合 PennyLane 使用的 JIT 编译框架,可把「量子电路 + 经典控制流」整体编译为原生混合量子-经典程序,支持 jax.jit 风格装饰器 @catalyst.qjit。训练循环中的经典 Python 开销(循环、分支)会被编译消除,在模拟器与硬件上均有效,是生产级训练管线的重要加速手段。
生产部署与监控:从上线到运维
本地大规模模拟。 当比特数超过 30 时,default.qubit 的纯 Python 实现会慢到不可用。生产环境应切换到 lightning.qubit(C++ 内核,单机多核并行)或 lightning.gpu(CUDA 加速,需安装 pennylane-lightning[gpu] 及配套 cuQuantum)。将电路打包为批处理(batch)执行,配合 jax.vmap 或 torch.vmap 可批量计算不同参数下的期望值,吞吐量提升显著。
硬件与云接入。 通过插件接入真实量子处理器时,先查询目标设备的能力(device.capabilities())确认门集与拓扑,再用 qml.transforms.transpile 把电路映射到原生门集。生产任务建议以 Amazon Braket(pennylane-braket)作为统一入口,其按用量计费、可托管调度,且支持在同一接口下切换模拟器与硬件,避免绑定单一硬件厂商。
可观测性。 训练监控至少记录四类指标:损失曲线(判断收敛)、梯度范数(诊断梯度消失/爆炸,常见于深层量子电路)、期望值方差(衡量测量噪声)、电路深度与门数(评估硬件可执行性)。配合 qml.specs 工具在每次训练循环中抽取电路统计信息,写入日志系统;对硬件任务记录提交时间、排队时间与执行时间三类耗时,以核算单次迭代的真实成本。当损失曲线出现平台期时,优先检查梯度范数是否归零——这是参数移位规则遇到非光滑测量时的典型信号。
<p class="para-label">避坑清单:</p>
<ul class="dash-list"><li>升级前必须核对官方 release notes 的 breaking changes:0.30 重构了 QNode 扩展机制、0.38 引入新执行模式,跨大版本升级可能破坏依赖旧 API 的代码,先跑迁移指南再升级。</li><li>不要在 QNode 内用依赖运行时值的 Python 循环或 if 构造电路:参数移位规则要求电路结构固定,动态结构会触发重编译并显著拖慢梯度计算,甚至产出错误梯度。</li><li>大规模模拟勿默认使用 default.qubit:它是纯 Python 参考实现,30+ 比特电路应切换 Lightning 或 GPU 版,否则单次求值耗时可能达到分钟级。</li><li>GPU 版需单独安装配套包:pennylane-lightning[gpu] 依赖 CUDA 工具链与 cuQuantum,版本不匹配会在 import 阶段直接报错,必须先核对官方 GPU 安装文档。</li><li>接硬件前确认设备门集与拓扑:真实处理器的原生门集有限,QNode 中使用不支持的幺正门会在提交时报错,先查询 capabilities 并用 transpile 转换。</li><li>JAX 版本敏感:0.32 起跟随 JAX 0.4 API 演进,jax 版本过新或过旧都可能触发 grad transform 兼容性错误,锁定官方测试过的版本组合。</li></ul>
| 维度 | PennyLane | Qiskit | Cirq | Braket SDK |
|---|---|---|---|---|
| 定位 | 可微量子计算与 QML 框架 | IBM 生态通用量子编程 SDK | 谷歌量子电路编程框架 | AWS 量子云服务开发套件 |
| 编排范式 | QNode 装饰器 + 统一设备抽象 | 电路对象 + Backend/Provider 抽象 | Circuit 不可变对象 + 调度器 | 电路定义 + AwsDevice 接口 |
| 类型约束 | 运行期动态建电路,可微性依赖门集 | 静态电路,支持 Parameter 绑定 | 电路不可变,利于调度但欠灵活 | 电路 + 参数化,可微支持较弱 |
| 学习曲线 | 中:需同时理解电路与 ML 训练 | 中高:硬件细节多、生态庞大 | 中:抽象较轻但生态较窄 | 中低:云语义直观但绑定 AWS |
| 生态集成 | PyTorch/TF/JAX 深度集成 | Qiskit Runtime、IBM 硬件生态 | 与 TensorFlow Quantum 联动 | SageMaker、AWS 云服务栈 |
| 生产部署 | 本地模拟器 + 多家云硬件插件 | IBM Cloud 与企业级运行时 | 谷歌量子云服务 | AWS Braket 托管量子硬件 |
| License | Apache 2.0 | Apache 2.0 | Apache 2.0 | SDK 开源,服务需 AWS 账号 |
| 适合谁 | QML 算法研发与混合建模团队 | IBM 硬件导向的量子开发 | 谷歌硬件研究与调度实验 | 云上弹性用量子资源的企业 |
选型建议:目标是把量子电路嵌进深度学习训练管道、需要解析梯度与框架原生集成,选 PennyLane;目标是做 IBM 量子硬件上的系统开发与运行时优化,选 Qiskit;目标是谷歌硬件上的电路调度与细粒度时序控制,选 Cirq;目标是零运维地按量使用多家云端量子硬件,选 Braket SDK。四者并非互斥——PennyLane 通过插件即可调用 Qiskit 与 Braket 的后端,可把它作为统一的算法层、将各厂商 SDK 作为执行层。
版本迭代
PennyLane 自 2018 年 0.1 版发布以来,演进主线是「可微性增强 → 设备生态扩张 → 与 ML 框架深度绑定 → 编译加速」四步。2023 年起,0.30 的 QNode 机制重构、0.35 的多设备并行、0.38 的新执行模式与 0.40 对 Python 3.13 的支持,逐步把框架从学术原型工具推向生产可用。约每季度一次 minor release,节奏稳定。
| 版本 | 时间 | 变化 | 提升 |
|---|---|---|---|
| v0.30 | 2023-05 | QNode 扩展机制重构 | 统一 QNode 执行流程,提升与 JAX/TF 的互操作性 |
| v0.32 | 2023-10 | 梯度 transform 体系化 | 引入统一的梯度变换接口,支持全局配置微分方法 |
| v0.35 | 2024-05 | Python 3.12 支持 | 新增多设备并行编排,弃用 TensorFlow 1.x 兼容路径 |
| v0.38 | 2025-01 | 新执行模式与 capture 机制 | 为 Catalyst 动态编译铺路,统一模拟与硬件执行路径 |
| v0.40 | 2025-06 | Python 3.13 支持 | VQE 默认优化器切换为 QNSPSA,梯度 transform 默认切换新接口 |
版本迭代主轴是从「能用」走向「生产可用」——重构执行管道、拥抱 Python 新版本、以 QNSPSA 等更稳健的优化器替代默认选择,均指向训练稳定性与可维护性。选型建议:新项目直接用 0.40+;从旧版本升级时,务必以官方迁移指南为纲,重点检查梯度 transform 与执行模式的 breaking changes。
AI 应用场景
变分量子本征求解器(VQE)用于分子基态能量计算
阶段:量子-经典混合优化 / 科学计算
解决的问题:传统量子化学计算(如完全活性空间方法)随体系增大呈指数级开销;VQE 用参数化量子电路制备试探态、以经典优化器迭代逼近基态,把指数级希尔伯特空间压缩到多项式级电路深度。PennyLane 在此场景的价值是:qml.qchem 自动完成分子哈密顿量的二次量子化映射,QNode 提供解析梯度供优化器使用,无需手工推导导数。
具体案例:官方 qchem 教程演示了用 VQE 求解 H₂ 分子基态能量——构建 STO-3G 基组下的分子哈密顿量、以 Hardware-Efficient Ansatz 制备试探态、用参数移位梯度驱动优化,最终能量收敛到与精确对角化一致的化学精度(误差在约 1.6 kcal/mol 化学精度阈值内)。典型运行于 lightning.qubit 模拟器上,耗时从秒级到分钟级。
量子神经网络(QNN)嵌入经典分类管道
阶段:模型训练 / 端到端可微管道
解决的问题:经典分类器在特定小样本或高维特征任务上存在表达瓶颈;把量子电路层(如 Angle Encoding + 纠缠层)作为特征提取器嵌入经典模型尾部,理论上可探索更大的假设空间。PennyLane 让这一混合训练像搭积木一样简单——qml.qnn.TorchLayer 可直接把 QNode 包装为 nn.Module。
具体案例:官方 Variational Classifier 教程将缩样 MNIST 手写数字做二分类(如区分 0 与 1),经 Angle Embedding 将图像像素编码为旋转角、若干层强纠缠电路后接经典 Softmax,数十轮 Adam 训练内交叉熵损失降至 0.1 以下,测试准确率约 90%。整个训练循环与纯 PyTorch 模型无差异。
混合量子-经典大模型微调管线原型
阶段:模型微调 / 特征增强
解决的问题:把量子层作为传统 Transformer 或 CNN 的旁路特征增强模块,是当前 QML 与主流 AI 结合最活跃的探索方向。PennyLane 的可微性保证量子层可以直接参与反向传播,框架与 PyTorch/JAX 的原生张量兼容性免去了自定义 autograd Function 的工作。
具体案例:研究团队把单比特 RY 旋转构成的量子层嵌入小型 CNN 的瓶颈层,在图像分类任务上对比「有无量子层」的收敛曲线与最终精度;PennyLane 侧只需在模型 forward 中调用 QNode 并让输出参与损失计算,全程无梯度适配代码。该模式多用于验证量子增强的可行性,而非追求大规模 SOTA。
常见误区
误区PennyLane 只能在本机模拟器上跑电路,要跑真机得换 Qiskit 或 Cirq,这两个工具是互斥的。
正解PennyLane 的设备抽象层天然支持多种后端。官方插件 pennylane-qiskit、pennylane-braket、pennylane-ionq、pennylane-quantinuum 分别接入 IBM、AWS、IonQ、Quantinuum 的真实量子处理器。切换后端通常只改设备字符串(如 "qiskit.ibmq" 或 "braket.aws"),电路代码零改动。它不仅能跑模拟,而且是少数把「模拟 → 云真机」统一为同一接口的框架。
为何常见:PennyLane 上手默认使用 default.qubit 模拟器,官方教程前半部分也以模拟为主,容易让人误以为它不具备硬件能力;而 Qiskit 的市场声量容易造成「量子编程 = Qiskit」的刻板印象。
误区PennyLane 的梯度是数值近似出来的,和有限差分(Finite Difference)差不多,精度有限,多采样几次能减少误差。
正解参数移位规则给出的是解析精确梯度。对单参数门,∂f/∂θ 严格等于 [f(θ+π/2) − f(θ−π/2)]/2,无截断误差;对多参数纠缠门,广义参数移位规则同样精确。而有限差分(diff_method="finite-diff")是显式指定时才使用的近似方案,且有步长选择的数值误差问题。二者在结果的精确性上有本质区别。
为何常见:多数工程师熟悉的自动微分是反向传播,看到「两次求值做差分」的表述,本能地联想起数值微分——这是把「形式像差分」误当「本质是差分」。
误区`@qml.qnode` 装饰的函数就是电路对象,可以直接像 Qiskit 的 QuantumCircuit 那样操作、打印、拼接。
正解QNode 是「电路 + 设备 + 测量 + 梯度方法」四者的组合封装,是一个可调用对象;它内部确实维护电路,但你无法直接对它做门拼接或可视化。要拿到底层电路,需用 qml.draw(circuit) 绘制文本图或 qml.specs(circuit) 抽取统计信息;要构造可复用电路模板,应使用 qml.templates 或自定义 Operation 子类。
为何常见:不同框架的术语体系交错——Qiskit 的 Circuit 是显式对象,PennyLane 的 qnode 是装饰器产物,初学容易按 Qiskit 的心智模型套用。
误区训练量子电路只能用 `qml.AdamOptimizer` 或 `qml.GradientDescentOptimizer` 这些框架自带优化器,否则没法更新电路参数。
正解PennyLane 的输出张量兼容 PyTorch/TF/JAX,把 QNode 的返回值接进任意经典优化器(如 torch.optim.Adam、keras.optimizers)完全合法,且官方推荐在混合模型中直接使用经典优化器统一管理全部参数。内置优化器的意义在于维持「不依赖 ML 框架」的纯 PennyLane 工作流(如快速原型或仅用 NumPy),而非强制约束。
为何常见:早期教程大量使用 qml.AdamOptimizer 演示纯 PennyLane 流程,且框架文档把优化器作为一等公民展示,容易误解为「必须」。
误区QNode 是普通 Python 函数,里面用 for 循环、if 分支、列表推导式动态生成电路完全没问题,和写普通代码一样自由。
正解QNode 内的 Python 控制流在「解释执行」模式下确实能运行,但一旦开启 jax.jit、Catalyst 编译或硬件提交,电路结构必须是静态可追踪的。更关键的是,参数移位规则要求电路结构在梯度计算时保持一致——运行时依赖参数值改变电路结构(如 if theta > 0 插入不同门)会产生错误或不稳定的梯度。动态结构应改用 qml.cond 等受控构造,或把分支移到 QNode 之外。
为何常见:装饰器带来的「这就是个普通函数」的错觉,加上 0.30 之前教程对动态结构的容忍,让不少人踩过坑。
面试题
Q1. PennyLane 中定义「量子节点」(可微量子计算单元)的核心装饰器是?
- A.@qml.qnode← 正确答案
- B.@qml.circuit
- C.@qml.quantum
- D.@qml.device
答案:A。@qml.qnode(dev) 将普通函数包装为绑定设备与测量方式的 QNode,是框架最核心的 API。@qml.device 不存在——设备用函数 qml.device() 创建而非装饰器;@qml.circuit 与 @qml.quantum 均为干扰项,PennyLane 中没有这两个装饰器。
Q2. PennyLane 安装后默认自带的本地模拟器名称是?
- A."default.qubit"← 正确答案
- B."local.simulator"
- C."qsim.simulator"
- D."default.tensor"
答案:A。qml.device("default.qubit", wires=n) 是纯 Python 参考实现模拟器,随安装包自带,零额外依赖即可跑通全部基础教程。“qsim.simulator“ 是谷歌 Cirq 生态的概念,”local.simulator“ 与 ”default.tensor” 不存在于 PennyLane 设备列表中。
Q3. 通过 pip 安装 PennyLane 基础库的正确命令是?
- A.pip install pennylane← 正确答案
- B.pip install quantum-qml
- C.conda install qml
- D.npm install pennylane
答案:A。PyPI 上的正式包名为 pennylane,命令为 pip install pennylane。quantum-qml 是无关第三方包;PennyLane 未发布 conda 官方包(conda install qml 不存在);npm 是 JavaScript 包管理器,与 Python 库无关。
Q4. QNode 默认的梯度计算机制是?
- A.参数移位规则(解析梯度)← 正确答案
- B.有限差分法(数值梯度)
- C.遗传算法随机搜索
- D.强化学习回报估计
答案:A。默认 diff_method="best" 会优先选择参数移位规则,它通过两次平移电路求值得到解析精确梯度,无截断误差。有限差分(B)是显式指定的近似替代方案。C 与 D 是优化策略而非梯度计算机制,与框架默认行为无关。
Q5. PennyLane 直接支持与哪些深度学习框架集成?(多选)
- A.PyTorch← 正确答案
- B.TensorFlow← 正确答案
- C.JAX← 正确答案
- D.Caffe
答案:ABC。PennyLane 核心特性之一是与 PyTorch、TensorFlow、JAX 三类主流框架原生集成,QNode 输出可直接参与其反向传播,并提供 qml.qnn.TorchLayer、KerasLayer 等封装层。Caffe 不在官方支持列表中。
Q6. 在 QNode 中测量 1 号比特的泡利 Z 期望值,正确写法是?
- A.return qml.expval(qml.PauliZ(wires=1))← 正确答案
- B.return qml.sample(qml.PauliZ(wires=1))
- C.return qml.expect(qml.PauliZ(wires=1))
- D.return qml.measure(qml.PauliZ, 1)
答案:A。qml.expval 返回期望值(标量,可微),是变分算法的标准测量;qml.sample(B)返回原始采样样本序列,非期望值。qml.expect 和 qml.measure 都不是 PennyLane 的测量 API。
Q7. 下列哪些是 PennyLane 官方内置的量子机器学习算法/应用模块?(多选)
- A.qml.qnn(量子神经网络层)← 正确答案
- B.qml.qaoa(量子近似优化)← 正确答案
- C.qml.qchem(量子化学)← 正确答案
- D.qml.llm(大语言模型)
答案:ABC。qml.qnn 提供 TorchLayer/KerasLayer 等神经网络层封装,qml.qaoa 提供 QAOA 电路与哈密顿量工具,qml.qchem 提供分子哈密顿量构造与 VQE 支持,三者均为内置模块。qml.llm 不存在——量子机器学习框架目前不涉及大语言模型。
Q8. PennyLane 自动微分与经典 ML 框架自动微分(如 PyTorch autograd)的关键区别在于?
- A.量子层依赖参数移位规则而非经典反向传播← 正确答案
- B.量子电路参数无须任何梯度信息
- C.自动微分仅对模拟器生效
- D.自动微分仅对真机生效
答案:A。量子电路的测量过程本质是概率采样,无法直接沿计算图反向传播,因此 PennyLane 以参数移位规则在电路层计算解析梯度,再接入经典框架的反向传播。B 错误——变分算法正是靠梯度训练;C/D 错误——自动微分在模拟器和硬件后端均可用。
Q9. 关于 Catalyst(PennyLane 的编译框架),下列说法正确的有?(多选)
- A.提供 JIT 编译能力,可加速混合量子-经典程序← 正确答案
- B.能编译包含经典控制流的混合程序← 正确答案
- C.仅能运行在本地模拟器上
- D.与 JAX 生态存在集成← 正确答案
答案:ABD。Catalyst 是 PennyLane 生态的 JIT 编译框架,把量子电路与经典控制流联合编译为原生程序,可部署到模拟器与硬件,故 A、B 正确、C 错误。官方支持将 Catalyst 程序嵌入 JAX 工作流,D 正确。
Q10. 对单参数旋转门 RY(θ),其期望值函数 f(θ) 的参数移位梯度公式是?
- A.[f(θ+π/2) − f(θ−π/2)] / 2← 正确答案
- B.[f(θ+π) − f(θ)] / 2
- C.f(θ+π/2) − f(θ−π/2)
- D.[f(θ+ε) − f(θ−ε)] / 2ε
答案:A。参数移位规则的标准形式为在原参数两侧各平移 π/2 并取差值的一半。C 缺了 1/2 系数,梯度幅值会放大一倍;B 移了 π 而非 π/2,不满足规则推导条件;D 是有限差分形式,只是数值近似而非解析梯度。