qml.operation¶
该模块包含用于定义PennyLane操作和可观察量的抽象基类。
描述¶
量子比特操作¶
Operator 类作为运算符的基类,并被 Observable 类和 Operation 类继承。这些类被子类化以在 PennyLane 中实现量子操作和测量可观测量。
每个
Operator子类代表物理状态之间一般类型的映射。这些子类的每个实例代表算子的一个应用或
一种用于测量并返回相应结果的指令。
操作符使用给定的参数值作用于一系列导线(子系统)。
每个
Operation子类代表一种量子操作,例如一个单位量子门。这些子类的每个实例代表将给定参数值应用于给定序列的线(子系统)的操作。每个
Observable子类代表一种物理可观测量。这些子类的每个实例代表一个测量指令,并返回给定参数值在一系列线(子系统)上的相应结果。
CV 操作基础类¶
由于额外的要求,连续变量(CV)操作必须是CVOperation或CVObservable类的子类,而不是Operation和Observable。
微分¶
要使用解析方法进行高斯CV操作的梯度计算,此外,您需要提供静态类方法 _heisenberg_rep(),该方法返回给定参数列表的海森堡表示。具体来说:
对于高斯CV操作,该方法应返回操作对给定参数值的象限算子向量\(\mathbf{r}\)所执行的线性变换矩阵。
对于高斯CV可观测量,此方法应返回一个实数向量(第一阶可观测量)或对称矩阵(第二阶可观测量),作为正交算子的系数 \(\x\) 和 \(\p\)。
PennyLane 使用约定 \(\mathbf{r} = (\I, \x, \p)\) 来表示单模态操作和可观测量,\(\mathbf{r} = (\I, \x_0, \p_0, \x_1, \p_1, \ldots)\) 来表示多模态操作和可观测量。
注意
非高斯CV操作和可观测量当前仅通过有限差分法的梯度计算支持。
目录¶
操作符类型¶
|
表示量子算子的基类。 |
|
表示应用于量子状态的量子门或通道的基类。 |
|
表示可观测量的基类。 |
|
一个表示连续变量操作的混入基类。 |
|
表示连续变量可观测量的基类。 |
|
表示连续变量量子门的基础类。 |
|
量子通道的基类。 |
|
一个用于状态准备操作的接口。 |

错误¶
当Operator方法未定义时,会引发一种错误类型,具体取决于未定义的方法。
用于未定义操作符属性或方法的通用异常。 |
|
当一个运算符的伴随版本未定义时引发。 |
|
当算子的分解表示未定义时引发。 |
|
当运算符的对角化门未定义时引发。 |
|
当算子的特征值未定义时引发。 |
|
异常,用于指示运算符没有生成器 |
|
当运算符的矩阵表示未定义时引发。 |
|
用于指示某个运算符没有参数频率的异常 |
|
当操作符的功率未定义时引发。 |
|
当操作符的稀疏矩阵表示未定义时引发。 |
|
当运算符作为线性组合的表示未定义时引发。 |
布尔函数¶
BooleanFn 是对单个对象的函数,返回 True 或 False。
operation 模块提供以下内容:
如果一个运算符定义了对角化门,则返回 |
|
如果一个算子定义了生成元,并且它是一个包含多个项的哈密顿量,则返回 |
|
如果一个操作符定义了生成器,则返回 |
|
如果一个操作符定义了 grad_method,则返回 |
|
如果一个运算符根据 |
|
如果根据 |
|
如果一个操作符根据 |
|
如果一个操作符是一个 |
|
如果算子的任何参数是可训练的,根据 |
|
如果对象不是量子纸带,则返回 |
其他¶
计算一个操作的导数。 |
|
|
整数枚举类,用于表示操作作用于的电线数量 |
表示子系统中所有线路的枚举。 |
|
一个表示子系统中任何电线的枚举。 |
PennyLane 还提供了一个函数,用于检查算子实例的一致性和正确性。
|
对 |
操作属性¶
PennyLane包含了一个用于存储具有相似属性和行为的操作列表的机制(例如,那些是自身的逆操作)。下面的属性已经包含,并主要用于编译变换的目的。可以通过实例化新的 Attribute 对象来添加新属性。请注意,这些对象位于 pennylane.ops.qubit.attributes 中,而不是 pennylane.operation。
用于表示具有某种属性的一组算子的类。 |
|
进行多次操作组合后,操作结果会在参数的加法(或替代累加)中产生的操作。 |
|
在计算基中对角的操作。 |
|
由单位算子生成的操作。 |
|
自身为逆的运算。 |
|
支持参数广播的操作。 |
|
如果交换线路的顺序,操作是相同的。 |
|
受控操作,如果你交换所有但最后一个(目标)电线的顺序,它们是相同的。 |