权重保存与酉矩阵拟合
适用版本 · ArcQML 0.1.0
本页目录
11.1 权重检查点的文件契约
save_weights 写入格式化 JSON,固定 format 为 arcqml/weights。每个参数记录 name、dtype 与 value;记录先按名称排序,使相同状态得到稳定顺序。写入只接受 numel=1 的 F32/F64 Circuit Parameter。
{
"format": "arcqml/weights",
"num_qubits": 2,
"parameters": [
{"name": "ry_q0_theta_0", "dtype": "f64", "value": 0.36154268969437336}
]
}
load_weights 在写入任何参数前完整校验 format、量子比特数、参数名集合、重复名称、dtype 和有限 value;随后才构造替换 Tensor 并写入 Parameter,成功写入后清空各参数梯度。校验失败不会留下半恢复电路。它不会比对门拓扑,因此调用方必须以预期的同构 Circuit 重建模型。
11.2 DenseUnitary 的数据契约
DenseUnitary 保存 num_qubits、dimension 和 row-major C64 数据。dimension 必须是 2 的幂;公开数据先使用输出计算基索引,再使用输入计算基索引。DenseUnitary::from_tensor 只检查 C64、二维方阵、连续复制后的长度和有限性;公共 unitary_from_tensor 在此基础上使用以下默认容差完整验证酉性:
unitary_from_circuit 通过对所有计算基初态组成的内部 batch 执行 Circuit,再转置为公开 row-major 布局。对于 n 个量子比特,其空间复杂度为:
因此,该功能限定为小规模电路比较和综合。
11.3 酉保真度、损失与解析梯度
目标整体酉矩阵与当前电路整体酉矩阵的迹重叠、整体酉保真度和损失分别定义为:
与第 9 章的纯态 fidelity 不同,此处会显式执行从 0 到 1 的区间截断,以限制数值舍入造成的越界。
unitary_loss 返回可纳入统一自动微分的 F64 标量。其反向先按逆序恢复前向 StateBatch,再按照下式累积每个参数的梯度,并乘上外层标量上游梯度: