返回Skills库

PennyLane

MIT
📊 数据知识
K-Dense-AI机器学习

硬件无关的量子机器学习框架,支持自动微分:训练量子电路、构建混合量子经典模型,并在 IBM、Google 等设备间移植,适用于变分算法与量子神经网络。

PennyLane

概述

PennyLane是一个量子计算库,使训练量子计算机像训练神经网络一样。它提供量子电路的自动微分、设备无关编程以及与经典机器学习框架的无缝集成。

安装

PennyLane 0.45.0 需要 Python 3.11 或更高版本。使用 uv 安装,并锁定版本号以保证环境可复现:

uv pip install "pennylane==0.45.0"

对于量子硬件访问,安装与目标提供商匹配的插件。添加或升级 Qiskit 时,建议从一个干净的环境开始,因为它的依赖关系图较为严格。

# IBM Quantum
uv pip install "pennylane-qiskit==0.45.0"

# Amazon Braket
uv pip install "amazon-braket-pennylane-plugin==1.34.1"

# Google Cirq
uv pip install "pennylane-cirq==0.44.0"

# Rigetti Forest
uv pip install "pennylane-rigetti==0.40.0"

# IonQ
uv pip install "pennylane-ionq==0.45.0"

# 高性能本地模拟器
uv pip install "pennylane-lightning==0.45.0"

# Catalyst JIT 编译
uv pip install "pennylane-catalyst==0.15.0"

快速开始

构建量子电路并优化其参数:

import pennylane as qml
from pennylane import numpy as np

# 创建设备
dev = qml.device('default.qubit', wires=2)

# 定义量子电路
@qml.qnode(dev)
def circuit(params):
    qml.RX(params[0], wires=0)
    qml.RY(params[1], wires=1)
    qml.CNOT(wires=[0, 1])
    return qml.expval(qml.PauliZ(0))

# 优化参数
opt = qml.GradientDescentOptimizer(stepsize=0.1)
params = np.array([0.1, 0.2], requires_grad=True)

for i in range(100):
    params = opt.step(circuit, params)

核心功能

1. 量子电路构建

使用门、测量和状态准备构建电路。请参阅references/quantum_circuits.md了解:

  • 单量子比特和多量子比特门
  • 受控操作和条件逻辑
  • 电路中间测量和自适应电路
  • 各种测量类型(期望值、概率、样本)
  • 电路检查和调试

2. 量子机器学习

创建混合量子-经典模型。请参阅references/quantum_ml.md了解:

  • 与PyTorch和JAX的集成
  • 量子神经网络和变分分类器
  • 数据编码策略(角度、振幅、基、IQP)
  • 使用反向传播训练混合模型
  • 量子电路的迁移学习

3. 量子化学

模拟分子并计算基态能量。请参阅references/quantum_chemistry.md了解:

  • 分子哈密顿量生成
  • 变分量子本征求解器(VQE)
  • 用于化学的UCCSD ansatz
  • 几何优化和解离曲线
  • 分子性质计算

4. 设备管理

在模拟器或量子硬件上执行。请参阅references/devices_backends.md了解:

  • 内置模拟器(default.qubit、lightning.qubit、default.mixed)
  • 硬件插件(IBM、Amazon Braket、Google、Rigetti、IonQ)
  • 设备选择和配置
  • 性能优化和缓存
  • GPU加速和JIT编译

5. 优化

使用各种优化器训练量子电路。请参阅references/optimization.md了解:

  • 内置优化器(Adam、梯度下降、动量、RMSProp)
  • 梯度计算方法(反向传播、参数移位、伴随)
  • 变分算法(VQE、QAOA)
  • 训练策略(学习率调度、小批量)
  • 处理 barren plateaus和局部最小值

6. 高级功能

利用模板、变换和编译。请参阅references/advanced_features.md了解:

  • 电路模板和层
  • 变换和电路优化
  • 脉冲级编程
  • Catalyst JIT编译
  • 噪声模型和错误缓解
  • 资源估计

常见工作流程

训练变分分类器

# 1. 定义ansatz
@qml.qnode(dev)
def classifier(x, weights):
    # 编码数据
    qml.AngleEmbedding(x, wires=range(4))

    # 变分层
    qml.StronglyEntanglingLayers(weights, wires=range(4))

    return qml.expval(qml.PauliZ(0))

# 2. 训练
opt = qml.AdamOptimizer(stepsize=0.01)
weights = np.random.random((3, 4, 3))  # 3层,4个量子比特

for epoch in range(100):
    for x, y in zip(X_train, y_train):
        weights = opt.step(lambda w: (classifier(x, w) - y)**2, weights)

运行VQE计算分子基态

from pennylane import qchem

# 1. 构建哈密顿量
symbols = ['H', 'H']
geometry = np.array([[0.0, 0.0, -0.66140414], [0.0, 0.0, 0.66140414]])
molecule = qchem.Molecule(symbols, geometry)
H, n_qubits = qchem.molecular_hamiltonian(molecule)
hf_state = qchem.hf_state(electrons=2, orbitals=n_qubits)
singles, doubles = qchem.excitations(electrons=2, orbitals=n_qubits)
s_wires, d_wires = qchem.excitations_to_wires(singles, doubles)

# 2. 定义ansatz
@qml.qnode(dev)
def vqe_circuit(params):
    qml.BasisState(hf_state, wires=range(n_qubits))
    qml.UCCSD(params, wires=range(n_qubits), s_wires=s_wires, d_wires=d_wires)
    return qml.expval(H)

# 3. 优化
opt = qml.AdamOptimizer(stepsize=0.1)
params = np.zeros(len(singles) + len(doubles), requires_grad=True)

for i in range(100):
    params, energy = opt.step_and_cost(vqe_circuit, params)
    print(f"步骤 {i}: 能量 = {energy:.6f} Ha")

在设备之间切换

# 相同电路,不同后端
circuit_def = lambda dev: qml.qnode(dev)(circuit_function)

# 在模拟器上测试
dev_sim = qml.device('default.qubit', wires=4)
result_sim = circuit_def(dev_sim)(params)

# 在量子硬件上运行
from qiskit_ibm_runtime import QiskitRuntimeService

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False, min_num_qubits=4)
dev_hw = qml.device('qiskit.remote', wires=backend.num_qubits, backend=backend)
result_hw = circuit_def(dev_hw)(params)

详细文档

有关特定主题的全面覆盖,请参考参考文件:

  • 入门references/getting_started.md - 安装、基本概念、第一步
  • 量子电路references/quantum_circuits.md - 门、测量、电路模式
  • 量子机器学习references/quantum_ml.md - 混合模型、框架集成、QNN
  • 量子化学references/quantum_chemistry.md - VQE、分子哈密顿量、化学工作流
  • 设备references/devices_backends.md - 模拟器、硬件插件、设备配置
  • 优化references/optimization.md - 优化器、梯度、变分算法
  • 高级references/advanced_features.md - 模板、变换、JIT编译、噪声

最佳实践

  1. 从模拟器开始 - 在部署到硬件之前在default.qubit上测试
  2. 对硬件使用参数移位 - 反向传播仅适用于模拟器
  3. 选择适当的编码 - 将数据编码与问题结构匹配
  4. 仔细初始化 - 使用小随机值避免barren plateaus
  5. 监控梯度 - 检查深度电路中的梯度消失
  6. 缓存设备 - 重用设备对象以减少初始化开销
  7. 分析电路 - 使用qml.specs()分析电路复杂性
  8. 本地测试 - 在提交到硬件之前在模拟器上验证
  9. 使用模板 - 利用内置模板进行常见电路模式
  10. 尽可能编译 - 对性能关键代码使用Catalyst JIT

资源

  • 官方文档:https://docs.pennylane.ai
  • 代码手册(教程):https://pennylane.ai/codebook
  • QML演示:https://pennylane.ai/qml/demonstrations
  • 社区论坛:https://discuss.pennylane.ai
  • GitHub:https://github.com/PennyLaneAI/pennylane

兼容工具

Claude CodeOpenClawHermes Agent

数据来源:claude-scientific-skillsMIT 许可) | 查看上游来源

上游项目:K-Dense-AI/scientific-agent-skills / claude-scientific-skills | 收录时间:2026-08-20 | 更新:2026-08-20

本页面内容基于上游开源许可项目整理,仅供学习参考。AI铺子不对第三方内容承担责任, 详情请参阅免责声明