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
会被转为一个参数 param
是None
- 在以下情况
param
会被记录为一个参数 param
是 ParamBase
- 在以下情况
param
会保持不变 param
是一个 paddle.Tensor 但不是 ParamBaseparam
是一个 float 或者 List[float]
- gate_history_generation()
生成量子门的历史记录
- display_in_circuit(ax, x)
画出量子电路图,在 Circuit 类中被调用。
- 参数:
ax (matplotlib.axes.Axes) –
matplotlib.axes.Axes
的实例.x (float) – 开始的水平位置。
- 返回:
占用的总宽度。
- 返回类型:
float