paddle_quantum.model

量子神经网络的通用模型模板

reset_settings()

重置 rcParams 为默认设定。

random_batch(data, label, batch_size)

从数据集和标签集中随机返回一个数据批次。

参数:
  • data (Iterable) – 数据集。

  • label (Iterable) – 标签集。

  • batch_size (int) – 数据批次的大小。

返回:

一批随机的数据。

返回类型:

Tuple[list, list]

class NullScheduler

基类:paddle.optimizer.lr.LRScheduler

用于不希望使用学习率策略的用户,可以被以下代码激活

from paddle_quantum.model import rcParams
rcParams['scheduler'] = None
class Model(network, name='Model')

基类:object

量子神经网络模型的通用模板。

参数:
  • network (paddle.nn.Layer) – 一个量子神经网络。

  • name (str) – 模型的名字。默认为 "Model"

parameters()

返回神经网络的参数。

返回:

神经网络的参数。

返回类型:

List[paddle.fluid.framework.ParamBase]

prepare(loss_fcn, metric_fcn=None, metric_name=None)

量子神经网络的常规功能设置。

参数:
  • loss_fcn (Callable[[Union[State, Circuit, Sequential], Any], Any]) – 量子神经网络的损失函数。

  • metric_fcn (Callable[[Union[Circuit, Sequential]], float]) – 量子神经网络的度量函数,不会干扰训练过程。默认为 None

  • metric_name (str) – 度量函数的名字。默认为 None

抛出:

ValueError – 度量函数的输出必须为 float。

备注

该函数同时会引入 rcParams 里的参数。

check_prepared()

检测模型是否准备好训练。

train(loss_generator)

量子神经网络单批次训练的通用模板

参数:

loss_generator (Callable[[Any], Any]) – 计算量子神经网络,以 Model.network 为输入的损失函数。默认为 None ,即使用在 Model.prepare 里定义的损失函数。

返回:

包含以下元素:

  • 一组损失数值。

  • 若给定了度量函数,同时返回一组度量值。

返回类型:

Union[List[float], Tuple[List[float], List[float]]]

evaluate(loss_generator)

量子神经网络评估的通用模板

参数:

loss_generator – 计算量子神经网络,以 Model.network 为输入的损失函数。默认为 None ,即使用在 Model.prepare 里定义的损失函数。

返回:

包含以下元素:

  • 损失数值;

  • 若给定了度量函数,同时返回度量值。

返回类型:

Union[float, Tuple[float, float]]

fit(train_data, train_label, test_data, test_label)

量子神经网络训练的通用模板

参数:
  • train_data (Iterable) – 训练集的数据。

  • train_label (Iterable) – 训练集的标签。

  • test_data (Iterable) – 测试集的数据。

  • test_label (Iterable) – 测试集的标签。

plot(include_metric, apply_log, has_epoch)

画图展示训练数据

参数:
  • include_metric (bool) – 是否包含度量值。

  • apply_log (bool) – 是否对数据施加 log。

  • has_epoch (bool) – 是否数据分批次训练

class OptModel(circuit, name='OptModel')

基类:paddle_quantum.model.Model

用于实现优化类量子神经网络的类。

参数:
  • circuit – 被优化的 Circuit 的实例。

  • name (str) – 模型的名字。默认为 "OptModel"

prepare(loss_fcn, metric_fcn=None, metric_name=None, *loss_args)

准备及检查优化类量子神经网络的功能设置。

参数:
  • loss_fcn (Callable[[Circuit, Any], paddle.Tensor]) – 量子神经网络的损失函数。

  • metric_fcn (Callable[[Union[Circuit, Sequential]], float]) – 量子神经网络的度量函数,不会干扰训练过程。默认为 None

  • metric_name (str) – 度量函数的名字。默认为 None

  • loss_args (any) – loss_fcn 除了量子神经网络输入以外的的参数。

抛出:

ValueError – 损失函数的输出必须为 paddle.Tensor。

备注

该函数同时会引入 rcParams 里的参数。

optimize()

根据损失函数优化电路。

返回:

包含以下元素:

  • 一组损失数值;

  • 若给定了度量函数,同时返回一组度量值。

返回类型:

Union[List[float], Tuple[List[float], List[float]]]

evaluate()

计算当前量子神经网络的损失值和度量值。

返回:

包含以下元素:

  • 损失数值;

  • 若给定了度量函数,同时返回度量值。

返回类型:

Union[float, Tuple[float, float]]

fit()
抛出:

NotImplementedError – 优化模型不支持 fit 功能:请直接使用 OptModel.optimize。

plot(include_metric=True, apply_log=False)

画图展示训练数据

参数:
  • include_metric (bool) – 是否包含度量值。 默认为 True

  • apply_log (bool) – 是否对数据施加 log。 默认为 False

class LearningModel(circuit, name='LearningModel')

基类:paddle_quantum.model.Model

用于实现学习类量子神经网络的类。

参数:
  • circuit – 被优化的 Circuit 的实例。

  • name (str) – 模型的名字。默认为 "LearningModel"

prepare(loss_fcn, metric_fcn=None, metric_name=None, *loss_args)

准备及检查学习类量子神经网络的功能设置。

参数:
  • loss_fcn (Callable[[State, Any, Any], Any]) – 量子神经网络输出的损失函数。

  • metric_fcn (Callable[[Union[Circuit, Sequential]], float]) – 量子神经网络的度量函数,不会干扰训练过程。默认为 None

  • metric_name (str) – 度量函数的名字。默认为 None

  • loss_args (any) – loss_fcn 除了量子神经网络输入和标签以外的的参数。

备注

  • 此类模型的数据输入必须为 paddle_quantum.State。 若数据需要编码到量子电路中,请使用 paddle_quantum.model.EncodingModel

  • 该函数同时会引入 rcParams 里的参数。

train_batch(data, label)

用单批次数据训练电路。

参数:
  • data – 一组输入量子态

  • data – 预期标签

返回:

包含以下元素:

  • 一组损失数值;

  • 若给定了度量函数,同时返回一组度量值。

返回类型:

Union[List[float], Tuple[List[float], List[float]]]

eval_batch(data, label)

用单批次数据评估电路。

参数:
  • data (List[State]) – 一组输入量子态

  • label (List[Any]) – 预期标签

返回:

包含以下元素:

  • 损失数值;

  • 若给定了度量函数,同时返回度量值。

返回类型:

Union[float, Tuple[float, float]]

fit(train_data, train_label, test_data, test_label)

使用输入数据训练电路。

参数:
  • train_data (List[State]) – 训练集的数据。

  • train_label (Iterable) – 训练集的标签。

  • test_data (List[State]) – 测试集的数据。

  • test_label (Iterable) – 测试集的标签。

plot(include_metric=True, apply_log=False)

画图展示训练数据

参数:
  • include_metric (bool) – 是否包含度量值。 默认为 True

  • apply_log (bool) – 是否对数据施加 log。 默认为 False

class EncodingNetwork(encoding_func, param_shape, initial_state=None)

基类:paddle.nn.Layer

编码模型的量子神经网络。

参数:
  • encoding_func (Callable[[Any, paddle.Tensor], Circuit]) – 决定如何构建量子电路的编码函数。

  • param_shape (Iterable[int]) – 输入参数的 shape。

  • initial_state (State) – 电路的初始态。

备注

仅用于 paddle_quantum.model.EncodingModel

forward(input_data)

计算输入对应的输出。

参数:

input_data (List[Any]) – 用于编码电路的输入数据。

返回:

电路的输出态。

返回类型:

List[State]

class EncodingModel(encoding_fcn, param_shape, initial_state=None, name='EncodingModel')

基类:Model

用于实现编码类量子神经网络的类。

参数:
  • encoding_fcn (Callable[[Any, paddle.Tensor], Circuit]) – 编码函数,用编码数据和参数决定如何构建量子电路。

  • param_shape (Iterable[int]) – encoding_fcn 参数的 shape。

  • initial_state (State) – 电路的初始态。默认为 None,即零态。

  • name (str) – 模型的名字。默认为 "EncodingModel"

备注

paddle_quantum.model.LearningModel 不同的是,该模型的数据需要编码至量子电路而不是量子态。 因此该模型需要知道输入数据是如何编入至量子电路的。该模型会根据 param_shape 自动生成所需的训练参数。

prepare(loss_fcn, metric_fcn=None, metric_name=None, *loss_args)

准备及检查编码类量子神经网络的功能设置。

参数:
  • loss_fcn (Callable[[State, Any, Any], Any]) – 量子神经网络输出的损失函数。

  • metric_fcn (Callable[[Union[Circuit, Sequential]], float]) – 量子神经网络的度量函数,不会干扰训练过程。默认为 None

  • metric_name (str) – 度量函数的名字。默认为 None

  • loss_args (any) – loss_fcn 除了量子神经网络输入和标签以外的的参数。

备注

该函数同时会引入 rcParams 里的参数。

train_batch(data, label)

用单批次数据训练电路。

参数:
  • data – 一组数据

  • data – 预期标签

返回:

包含以下元素:

  • 一组损失数值;

  • 若给定了度量函数,同时返回一组度量值。

返回类型:

Union[List[float], Tuple[List[float], List[float]]]

eval_batch(data, label)

用单批次数据评估电路。

参数:
  • data (Iterable) – 一组数据

  • label (Iterable) – 预期标签

返回:

包含以下元素:

  • 损失数值;

  • 若给定了度量函数,同时返回度量值。

返回类型:

Union[float, Tuple[float, float]]

fit(train_data, train_label, test_data, test_label)

使用输入数据训练电路。

参数:
  • train_data (Iterable) – 训练集的数据。

  • train_label (Iterable) – 训练集的标签。

  • test_data (Iterable) – 测试集的数据。

  • test_label (Iterable) – 测试集的标签。

plot(include_metric=True, apply_log=False)

画图展示训练数据

参数:
  • include_metric (bool) – 是否包含度量值。 默认为 True

  • apply_log (bool) – 是否对数据施加 log。 默认为 False