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)
使用输入数据训练电路。
- 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
编码模型的量子神经网络。
- 参数:
备注
仅用于
paddle_quantum.model.EncodingModel
。
- class EncodingModel(encoding_fcn, param_shape, initial_state=None, name='EncodingModel')
基类:
Model
用于实现编码类量子神经网络的类。
- 参数:
备注
与
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
。