数据、线路层与模型
QML 数据层使用 PyTorch 张量;线路由编码层、参数化 ansatz 和读出层组成。高层模型将这些组件组合成分类、回归或生成任务接口。
数据与预处理
import torch
from unitarylab.library.qml.data import (
Dataset,
scale_features_to_range,
standardize,
train_test_split,
)
features = torch.tensor([
[-1.0, 0.2], [-0.5, 0.4], [0.6, -0.3], [1.0, -0.8]
], dtype=torch.float64)
targets = torch.tensor([0, 0, 1, 1])
dataset = Dataset(
features=scale_features_to_range(standardize(features)),
targets=targets,
)
train_set, test_set = train_test_split(dataset, test_fraction=0.25, seed=0)| 工具 | 用途 |
|---|---|
Dataset | 保存特征、目标和可选元数据 |
standardize() | 按特征标准化 |
scale_features_to_range() | 将特征映射到角度编码区间 |
pad_features() | 补齐编码所需特征维度 |
TargetStandardizer | 拟合、变换和恢复回归目标 |
train_test_split()、stratified_train_test_split()、k_fold_split() | 数据集划分 |
load_csv_dataset() | 从 CSV 构建数据集 |
bars_and_stripes_patterns() | 生成建模示例数据 |
预处理应只在训练集上拟合统计量,再应用到验证集和测试集,避免数据泄漏。
编码、ansatz 与读出
from unitarylab.library.qml.layers import (
AngleEncoding,
HardwareEfficientAnsatz,
)
encoding = AngleEncoding(num_qubits=2)
ansatz = HardwareEfficientAnsatz(num_qubits=2, num_layers=1)| 类别 | 主要组件 | 输入约束 |
|---|---|---|
| 编码 | AngleEncoding、DenseAngleEncoding、AmplitudeEncoding、ZZFeatureEncoding | 角度编码要求特征数匹配;幅度编码要求可归一化并适配 维 |
| ansatz | HardwareEfficientAnsatz、DataReuploadingAnsatz、QCNNAnsatz | 参数向量长度必须等于 parameter_count |
| 纠缠 | FixedEntangler、ParameterizedEntangler | 边集合必须落在量子比特范围内 |
| 读出 | ExpectationReadout、PauliReadout、ProbabilityReadout、SampleReadout、StateReadout、DensityMatrixReadout | 返回类型依赖后端能力和 shots 配置 |
| 连续变量 | CVDisplacementEncoding、CVNeuralNetworkAnsatz、QuadratureReadout | 仅用于连续变量后端 |
SequentialCircuitLayer 可顺序组合多个层;as_parameter_vector() 与 split_parameter_vector() 用于整理和切分参数。
高层模型
from unitarylab.library.qml.models import VQCClassifier
from unitarylab.library.qml.nn import TorchQMLLayer
model = VQCClassifier(
num_qubits=4,
num_layers=1,
num_classes=3,
readout_wires=(0, 1, 2),
)
module = TorchQMLLayer(model, seed=0)| 任务 | 模型 |
|---|---|
| 分类 | QuantumClassifier、VQCClassifier、DataReuploadingClassifier、QCNNClassifier、CVQuantumClassifier |
| 回归 | QuantumRegressor、VQRegressor、DataReuploadingRegressor、QCNNRegressor |
| 生成 | QuantumBornMachine、QuantumGenerator |
| 自定义变分模型 | QMLModel、ParameterizedQMLModel、VariationalQuantumModel |
| PyTorch 集成 | TorchQMLLayer、TorchBornMachine、TorchQuantumGenerator、QuantumGAN、Quanvolution2d |
类别数量、读出维度和损失函数必须一致。接受批量数据的接口以第一维表示 batch;单样本和批量输出的形状可能不同,训练前应执行一次前向传播并检查形状。
资源限制
量子比特数决定状态空间,ansatz 层数决定可训练参数和线路深度。幅度编码还需要制备归一化状态。先从较少量子比特和一层 ansatz 开始,再根据验证集结果扩展。
相关页面
最后更新于