4. 参数张量与电路实例的关系

在量子电路编程中,我们经常需要把同一段电路结构应用到不同的参数取值上。这时,电路本身是“模板”,参数是“数据”,而参数张量则决定了这份数据以什么形状、什么维度被组织起来。厘清参数形状与电路实例之间的对应关系,是正确使用参数绑定、避免维度错位和批量运行失败的关键。

先明确一个基本约定:本节所说的“参数张量”,指的是以数组形式组织的参数集合,其形状(shape)由各维长度描述;而“电路实例”指的是把一组具体数值绑定到电路参数后得到的、可直接提交执行的对象。一个电路模板加上一份参数张量,可以生成一个或多个电路实例,具体数量由参数张量的组织方式决定。

单参数:标量绑定与单实例

最简单的形式是电路只有一个可调参数,参数张量退化为标量。例如一个含单个旋转门 Rx(θ) 的电路,θ 是一个实数。此时参数形状为空(可记为 () 或标量),绑定后只产生一个电路实例。这种情形下,参数与实例是一一对应的,不存在批量维度,理解上没有歧义。

电路模板: Rx(theta) 作用于 qubit 0
参数张量: theta = 0.785
形状: ()  →  实例数: 1

向量参数:一维批量与多实例

当电路结构不变、但需要对同一个参数取多个值时,参数张量升级为一维向量。例如 θ 取 [0.1, 0.3, 0.5, 0.7],形状为 (4,)。此时绑定操作会沿这个批量维度展开,生成 4 个电路实例,每个实例对应向量中的一个元素。这里要特别注意:向量长度就是实例数量,向量中的第 i 个元素对应第 i 个实例,顺序不能随意打乱,否则结果与参数的对应关系就会错位。

如果电路有多个参数,比如 θ1 和 θ2,而它们各自需要一个向量,那么参数张量可以组织成形状 (N, 2) 的二维数组,其中 N 是批量大小,第二维对应参数个数。也可以分别传入两个长度为 N 的向量,由绑定逻辑按位置配对。两种组织方式在语义上等价,但形状声明必须与绑定接口的期望一致。

矩阵参数:多维网格与参数扫描

矩阵参数对应的是多维参数网格。典型场景是二维参数扫描:θ1 取 M 个值,θ2 取 K 个值,我们希望覆盖所有组合。此时参数张量形状为 (M, K, 2),前两维是扫描网格,最后一维是参数索引;绑定后生成 M×K 个电路实例。也可以把两个参数分别组织为形状 (M, 1) 和 (1, K) 的张量,利用广播机制得到 (M, K) 的组合网格。广播能减少显式循环,但必须清楚广播后的实际形状,否则容易把“参数维度”和“批量维度”混淆。

判断实例数量的通用方法:先确定参数张量中哪些维度是批量维度(对应不同电路实例),哪些维度是参数维度(对应电路内部的参数槽位)。实例总数等于所有批量维度长度的乘积,参数维度长度必须与电路参数个数一致。

形状、维度与实例的对应关系

把上述三种情形放在一起,可以用一张图清晰表达参数张量的形状如何映射到电路实例。下图以“参数张量 → 绑定 → 电路实例”为主线,分别展示标量、向量和矩阵三种组织方式,并标注各自的批量维度与实例数量。

参数张量形状与电路实例的对应关系 参数张量 绑定展开 电路实例 标量参数 θ = 0.785 形状 () 批量维度:无 直接绑定 实例 #0 θ=0.785 共 1 个实例 参数与实例一一对应 向量参数 θ = [0.1, 0.3, 0.5, 0.7] 形状 (4,) 批量维度:第0维 长度 4 → 4 个实例 按元素展开 #0 θ=0.1 #1 θ=0.3 #2 θ=0.5 #3 θ=0.7 共 4 个实例 第 i 个元素 → 第 i 个实例 顺序必须保持一致 矩阵参数 θ₁ 取 M 值,θ₂ 取 K 值 形状 (M, K, 2) 批量维度:第0、1维 实例数 = M × K 网格展开 #(0,0) θ₁₀,θ₂₀ #(0,1) θ₁₀,θ₂₁ #(1,0) θ₁₁,θ₂₀ #(1,1) θ₁₁,θ₂₁ … 共 M×K 个 共 M×K 个实例 每个网格点对应一个实例 最后一维为参数索引 不可与批量维度混淆 实例总数 = 各批量维度长度之积;参数维度长度必须等于电路参数个数

组织参数张量时的常见陷阱

第一类陷阱是把参数维度误当成批量维度。例如电路有两个参数,参数张量写成形状 (2,),本意是“两个参数各取一个值”,但绑定接口可能把它解释为“批量大小为 2、每个实例只有一个参数”,从而报参数个数不匹配。正确做法是明确区分:若两个参数各取单值,形状应为 (2,) 且声明参数维度为最后一维;若要批量,则形状应为 (N, 2)。

第二类陷阱是广播后的形状与预期不符。用 (M, 1) 与 (1, K) 广播得到 (M, K) 时,实例顺序由广播规则决定,通常是先行后列。如果后续结果分析按列优先索引,就会把参数组合与结果对错位。建议在绑定后显式记录每个实例对应的参数取值,或直接使用 (M, K, 2) 的显式网格,避免隐式广播带来的顺序歧义。

第三类陷阱是参数顺序与电路参数槽位不一致。电路模板中参数按 [θ₁, θ₂] 的顺序声明,参数张量最后一维也必须按同样顺序排列。若中途调换了列顺序,虽然形状合法,但绑定后的物理含义已经改变,结果看似正常实则错误。工程上应把参数名与列索引的映射固定下来,并在批量运行前做一次小规模抽查。

一个可执行的检查流程

在实际提交批量任务前,可以按以下顺序核对:先确认电路模板的参数个数 P;再确认参数张量的最后一维长度是否等于 P;然后列出所有批量维度并计算实例总数;最后抽取首、中、尾三个实例,打印其绑定后的参数值,与参数张量中对应位置的元素逐一比对。这三步能覆盖绝大多数形状与顺序问题。

组织方式 参数张量形状 批量维度 实例数量 典型用途
单参数 () 无 1 单点验证、调试
向量参数 (N,) 第 0 维 N 一维扫描、批量采样
多参数向量 (N, P) 第 0 维 N 多参数同步批量
矩阵参数 (M, K, P) 第 0、1 维 M×K 二维网格扫描

掌握这张对应关系后,参数绑定就不再是“试出来”的操作,而是可以先在纸面上确定形状、再落到代码里的确定性步骤。形状对了,实例数量就对了;维度语义清楚了,结果与参数的对应关系也就不会错位。