[ PROMPT_NODE_26988 ]
getting_started
[ SKILL_DOCUMENTATION ]
# PennyLane 入门
## 什么是 PennyLane?
PennyLane 是一个用于量子计算、量子机器学习和量子化学的跨平台 Python 库。它通过自动微分和与经典机器学习框架的无缝集成,使量子计算机能够像神经网络一样进行训练。
## 安装
使用 uv 安装 PennyLane:
bash
uv pip install pennylane
针对特定设备插件(IBM, Amazon Braket, Google, Rigetti 等):
bash
# IBM Qiskit
uv pip install pennylane-qiskit
# Amazon Braket
uv pip install amazon-braket-pennylane-plugin
# Google Cirq
uv pip install pennylane-cirq
# Rigetti
uv pip install pennylane-rigetti
## 核心概念
### 量子节点 (QNodes)
QNode 是可以在量子设备上评估的量子函数。它将量子电路定义与设备结合在一起:
python
import pennylane as qml
# 定义设备
dev = qml.device('default.qubit', wires=2)
# 创建 QNode
@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))
### 设备
设备用于执行量子电路。PennyLane 支持:
- **模拟器**: `default.qubit`, `default.mixed`, `lightning.qubit`
- **硬件**: 通过插件访问 (IBM, Amazon Braket, Rigetti 等)
python
# 本地模拟器
dev = qml.device('default.qubit', wires=4)
# Lightning 高性能模拟器
dev = qml.device('lightning.qubit', wires=10)
### 测量
PennyLane 支持多种测量类型:
python
@qml.qnode(dev)
def measure_circuit():
qml.Hadamard(wires=0)
# 期望值
return qml.expval(qml.PauliZ(0))
@qml.qnode(dev)
def measure_probs():
qml.Hadamard(wires=0)
# 概率分布
return qml.probs(wires=[0, 1])
@qml.qnode(dev)
def measure_samples():
qml.Hadamard(wires=0)
# 采样测量
return qml.sample(qml.PauliZ(0))
## 基本工作流
### 1. 构建电路
python
import pennylane as qml
import numpy as np
dev = qml.device('default.qubit', wires=3)
@qml.qnode(dev)
def quantum_circuit(weights):
# 应用门
qml.RX(weights[0], wires=0)
qml.RY(weights[1], wires=1)
qml.CNOT(wires=[0, 1])
qml.RZ(weights[2], wires=2)
# 测量
return qml.expval(qml.PauliZ(0) @ qml.PauliZ(1))
### 2. 计算梯度
python
# 自动微分
grad_fn = qml.grad(quantum_circuit)