paddle_quantum.gate.base

量子门的基类的功能实现。

class Gate(matrix=None, qubits_idx=None, depth=1, gate_info=None, num_qubits=None, check_legality=True, num_acted_qubits=None, backend=None, dtype=None, name_scope=None)

基类:paddle_quantum.channel.base.Channel

量子门的基类。

参数:
  • matrix (paddle.Tensor) – 量子门的矩阵

  • qubits_idx (Union[Iterable[Iterable[int]], Iterable[int], int]) – 作用在的量子比特的编号。

  • depth (int, optional) – 层数,默认为 1

  • gate_info (dict, optional) – 量子门的信息,用于信息追溯或者画图。

  • check_legality (bool) – 表示的完整性校验,默认为 True

  • num_acted_qubits (int) – 量子门作用的量子比特的数量,默认为 None

  • backend (paddle_quantum.Backend, optional) – 执行门的后端,默认为 None

  • dtype (str, optional) – 数据的类型,默认为 None

  • name_scope (str, optional) – 为 Layer 内部参数命名而采用的名称前缀。如果前缀为 “mylayer”,在一个类名为MyLayer的Layer中,参数名为”mylayer_0.w_n”,其中 “w” 是参数的名称,”n” 为自动生成的具有唯一性的后缀。如果为 None,前缀名将为小写的类名。默认为 None

property matrix

此门的酉矩阵

抛出:

ValueError – 需要在门的实例给出矩阵。

gate_history_generation()

生成量子门的历史记录

set_gate_info(**kwargs)

设置 gate_info 的接口

参数:

kwargs (Any) – 用于设置 gate_info 的参数。

display_in_circuit(ax, x)

画出量子电路图,在 Circuit 类中被调用。

参数:
  • ax (matplotlib.axes.Axes) – matplotlib.axes.Axes 的实例.

  • x (float) – 开始的水平位置。

返回:

占用的总宽度。

返回类型:

float

备注

使用者可以覆写此函数,从而自定义显示方式。

class ParamGate(generator, param=None, depth=1, num_acted_param=1, param_sharing=False, qubits_idx=None, gate_info=None, num_qubits=None, check_legality=True, num_acted_qubits=None, backend=None, dtype=None, name_scope=None)

基类:paddle_quantum.gate.base.Gate

可参数化量子门的基类。

参数:
  • generator (Callable[[Tensor],Tensor]) – 用于产生量子门酉矩阵的函数。

  • param (Union[Tensor,float,List[float]]) – 输入参数,默认为 None i.e. 随机。

  • qubits_idx (Union[Iterable[Iterable[int]], Iterable[int], int]) – 作用在的量子比特的编号。默认为 None i.e. list(range(num_acted_qubits))。

  • depth (int, optional) – 层数,默认为 1

  • num_acted_param (int, optional) – 单次操作需要的参数数量。

  • param_sharing (bool) – 所有操作是否共享相同的一组参数。

  • gate_info (dict, optional) – 量子门的信息,用于信息追溯或者画图。

  • num_qubits (int) – 量子比特总数,默认为 None

  • check_legality (bool) – 表示的完整性校验,默认为 True

  • num_acted_qubits (int) – 量子门作用的量子比特的数量,默认为 None

  • backend (paddle_quantum.Backend, optional) – 执行门的后端,默认为 None

  • dtype (str, optional) – 数据的类型,默认为 None

  • name_scope (str, optional) – 为 Layer 内部参数命名而采用的名称前缀。如果前缀为 “mylayer”,在一个类名为MyLayer的Layer中,参数名为”mylayer_0.w_n”,其中 “w” 是参数的名称,”n” 为自动生成的具有唯一性的后缀。如果为 None,前缀名将为小写的类名。默认为 None

theta_generation(param, param_shape)

规范可参数化量子门的输入,并根据输入决定是否要管理或者生成参数

参数:
  • param (Union[paddle.Tensor, float, List[float]]) – 可参数化量子门的输入

  • param_shape (List[int]) – 输入的形状

备注

在以下情况 param 会被转为一个参数
  • paramNone

在以下情况 param 会被记录为一个参数
  • paramParamBase

在以下情况 param 会保持不变
  • param 是一个 paddle.Tensor 但不是 ParamBase

  • param 是一个 float 或者 List[float]

gate_history_generation()

生成量子门的历史记录

display_in_circuit(ax, x)

画出量子电路图,在 Circuit 类中被调用。

参数:
  • ax (matplotlib.axes.Axes) – matplotlib.axes.Axes 的实例.

  • x (float) – 开始的水平位置。

返回:

占用的总宽度。

返回类型:

float